Bonjour,
J'ai un dossier qui contient des dossiers qui contiennent etc.
et finalement des photos.
Peut-on facilement supprimer tous les dossiers intermédiaires
pour que tous les photos se retrouvent dans un même dossier.
Remarque : je crois que toutes mes photos ont des noms différents
ce qui devrait être une bonne chose.
Merci d'avance.
Pierre
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20100328113235.GA27871@allken-bernard.org
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Klaus Becker
Le Dimanche 28 Mars 2010 13:32:35, Pierre Allken-Bernard a écrit :
Bonjour, J'ai un dossier qui contient des dossiers qui contiennent etc. et finalement des photos. Peut-on facilement supprimer tous les dossiers intermédiaires pour que tous les photos se retrouvent dans un même dossier. Remarque : je crois que toutes mes photos ont des noms différents ce qui devrait être une bonne chose.
Merci d'avance.
Pierre
Salut,
le script suivant remonte tous les fichiers d'un niveau et supprime les dossiers vides :
======== #!/bin/bash
for dir in `find /home/... -type d` ; do cd $dir find . -maxdepth 1 -type f -exec mv {} .. ; done for dir in `find /home/... -type d` ; do cd $dir if [ `ls -l | wc -l` -le 1 ] then rm -rf $dir fi done =======
/home/... est à remplacer par le dossier concerné. J'ai utilisé ça pls fois avec succès, mais il vaut mieux le tester d'abord.
Vivent les arbres, les vrais !
bye bye
Klaus
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Le Dimanche 28 Mars 2010 13:32:35, Pierre Allken-Bernard a écrit :
Bonjour,
J'ai un dossier qui contient des dossiers qui contiennent etc.
et finalement des photos.
Peut-on facilement supprimer tous les dossiers intermédiaires
pour que tous les photos se retrouvent dans un même dossier.
Remarque : je crois que toutes mes photos ont des noms différents
ce qui devrait être une bonne chose.
Merci d'avance.
Pierre
Salut,
le script suivant remonte tous les fichiers d'un niveau et supprime les
dossiers vides :
========
#!/bin/bash
for dir in `find /home/... -type d` ; do
cd $dir
find . -maxdepth 1 -type f -exec mv {} .. ;
done
for dir in `find /home/... -type d` ; do
cd $dir
if [ `ls -l | wc -l` -le 1 ]
then
rm -rf $dir
fi
done
=======
/home/... est à remplacer par le dossier concerné. J'ai utilisé ça pls fois
avec succès, mais il vaut mieux le tester d'abord.
Vivent les arbres, les vrais !
bye bye
Klaus
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/201003281347.03462.colonius@free.fr
Le Dimanche 28 Mars 2010 13:32:35, Pierre Allken-Bernard a écrit :
Bonjour, J'ai un dossier qui contient des dossiers qui contiennent etc. et finalement des photos. Peut-on facilement supprimer tous les dossiers intermédiaires pour que tous les photos se retrouvent dans un même dossier. Remarque : je crois que toutes mes photos ont des noms différents ce qui devrait être une bonne chose.
Merci d'avance.
Pierre
Salut,
le script suivant remonte tous les fichiers d'un niveau et supprime les dossiers vides :
======== #!/bin/bash
for dir in `find /home/... -type d` ; do cd $dir find . -maxdepth 1 -type f -exec mv {} .. ; done for dir in `find /home/... -type d` ; do cd $dir if [ `ls -l | wc -l` -le 1 ] then rm -rf $dir fi done =======
/home/... est à remplacer par le dossier concerné. J'ai utilisé ça pls fois avec succès, mais il vaut mieux le tester d'abord.
Vivent les arbres, les vrais !
bye bye
Klaus
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
@Pierre : ça tient en une ligne, à modifier selon tes besoins.
Regarde l'option --backup=MODE de mv, si il se trouve que tu as
des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname
'*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done'
territorial_pissings {} +
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20100328121832.GA1868@wxcvbn.org
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Pierre Allken-Bernard
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de répertoires comprenant des espaces / autres caractères exotiques. Tu peux parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non. Merci en tout cas.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de
répertoires comprenant des espaces / autres caractères exotiques. Tu peux
parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins.
Regarde l'option --backup=MODE de mv, si il se trouve que tu as
des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname
'*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done'
territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible
(même si je ne sais pas vraiment faire), je me
demandais simplement s'il existait une petite
commande standard pour le faire, apparemment non.
Merci en tout cas.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20100328162018.GC28190@allken-bernard.org
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de répertoires comprenant des espaces / autres caractères exotiques. Tu peux parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non. Merci en tout cas.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Basile Starynkevitch
Pierre Allken-Bernard wrote:
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non.
Avec zsh on pourrait faire quelque chose comme
foreach f $srcdir/**/*(.); do cp -a $f $dstdir/$(basename $f) done
## pas testé!
Librement
-- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mines, sont seulement les miennes} ***
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Pierre Allken-Bernard wrote:
Je me doutais qu'en une ligne c'est possible
(même si je ne sais pas vraiment faire), je me
demandais simplement s'il existait une petite
commande standard pour le faire, apparemment non.
Avec zsh on pourrait faire quelque chose comme
foreach f $srcdir/**/*(.); do
cp -a $f $dstdir/$(basename $f)
done
## pas testé!
Librement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/4BAF8420.9060408@starynkevitch.net
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non.
Avec zsh on pourrait faire quelque chose comme
foreach f $srcdir/**/*(.); do cp -a $f $dstdir/$(basename $f) done
## pas testé!
Librement
-- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mines, sont seulement les miennes} ***
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
François Cerbelle
Pierre Allken-Bernard a écrit :
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de répertoires comprenant des espaces / autres caractères exotiques. Tu peux parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non. Merci en tout cas.
Dans ton cas précis, je pense qu'un simple : find rep_racine -type f -exec mv "{}" "rep_racine" ; devrait suffire. A supposer que tu n'aies pas de conflit sur les noms de fichier, sinon, l'option -b de mv t'aidera : find rep_racine -type f -exec mv -b "{}" "rep_racine" ;
Fanfan
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Pierre Allken-Bernard a écrit :
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de
répertoires comprenant des espaces / autres caractères exotiques. Tu peux
parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins.
Regarde l'option --backup=MODE de mv, si il se trouve que tu as
des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname
'*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done'
territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible
(même si je ne sais pas vraiment faire), je me
demandais simplement s'il existait une petite
commande standard pour le faire, apparemment non.
Merci en tout cas.
Dans ton cas précis, je pense qu'un simple :
find rep_racine -type f -exec mv "{}" "rep_racine" ;
devrait suffire. A supposer que tu n'aies pas de conflit sur les noms de
fichier, sinon, l'option -b de mv t'aidera :
find rep_racine -type f -exec mv -b "{}" "rep_racine" ;
Fanfan
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/4BAF8BEA.5000903@cerbelle.net
Le 28/03/2010 à 14:18:32, Jeremie COURREGES-ANGLAS a écrit :
@Klaus : je considère ton script dangereux car il ne gère pas les noms de répertoires comprenant des espaces / autres caractères exotiques. Tu peux parfaitement l'utiliser chez toi si tu es sûr des noms de tes dossiers.
@Pierre : ça tient en une ligne, à modifier selon tes besoins. Regarde l'option --backup=MODE de mv, si il se trouve que tu as des fichiers ayant le même nom.
find . -mindepth 2 -type f ( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' ) -exec sh -c 'for i; do echo mv "$i" "${i##*/}"; done' territorial_pissings {} +
Je me doutais qu'en une ligne c'est possible (même si je ne sais pas vraiment faire), je me demandais simplement s'il existait une petite commande standard pour le faire, apparemment non. Merci en tout cas.
Dans ton cas précis, je pense qu'un simple : find rep_racine -type f -exec mv "{}" "rep_racine" ; devrait suffire. A supposer que tu n'aies pas de conflit sur les noms de fichier, sinon, l'option -b de mv t'aidera : find rep_racine -type f -exec mv -b "{}" "rep_racine" ;
Fanfan
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Pierre Allken-Bernard
Le 28/03/2010 à 21:52:37, Jeremie COURREGES-ANGLAS a écrit :
Si vous voulez plus simple encore, y'a : mv **/*.jpg .
C'est impressionnant ça !
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Le 28/03/2010 à 21:52:37, Jeremie COURREGES-ANGLAS a écrit :
Si vous voulez plus simple encore, y'a :
mv **/*.jpg .
C'est impressionnant ça !
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20100328200449.GA30882@allken-bernard.org
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20100328195237.GB1868@wxcvbn.org