Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/12/2022, à 01:12

jose6a

déplacement de tous les fichier *.png d'une arborescence vers dossier

Bonjour,
c'est surement pas très compliqué, mais, j'aimerais, en ligne de commande
déplacer (je crois que c'est la commande MV) tous les fichiers d'un type donné jpg, png, pdf, etc etc se trouvant dans un répertoire ET les sous répertoires
vers un répertoire unique, et si des fichiers portent le même nom, renommer automatiquement avec un nombre (toto.jpg et toto(1).jpg par exemple)

Merci pour votre aide.
çà sera une bonne chose de commencer 2023 en connaissant la commande pour faire ces déplacements.

Bonne année !
Merci

José


Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun  7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

Hors ligne

#2 Le 31/12/2022, à 01:39

Vobul

Re : déplacement de tous les fichier *.png d'une arborescence vers dossier

La première partie c'est facile. C'est le fait de renommer qui devient plus complexe.

Par exemple, si tu fais :

mkdir -p src/{a,b}
touch src/a/toto.jpg
touch src/b/toto.png
touch src/b/toto.jpg
mkdir dest
find src -type f \( -iname '*.jpg' -o -iname '*.png'  -o -iname '*.pdf' \) -exec cp --backup=t {} dest \;

Tu obtiens dans dest, toto.jpg, toto.jpg.~1~ et toto.png.

Donc à partir de là, soit tu remplaces la commande cp par un script un peu plus évolué qui va correctement renommer le fichier (en gardant bien l'extension, pas comme ce débile de cp qui te rajoute un truc à la fin comme un gros sagouin), soit tu commences par regarder si des fichiers ont le même nom dans un premier temps pour t'éviter de perdre du temps pour un problème que tu n'as peut-être pas, ou qui ne concerne peut-être que 3 fichiers :

find src -type f | awk -F/ '{print $NF}' | sort -f | uniq -i -d

Ça te donne "toto.jpg" qui est notre fichier qui est à la fois dans a/ et b/. Donc après tu peux le find à nouveau pour avoir son chemin complet et le renommer à la main. À voir si t'as 480.000 fichiers ou pas bien sûr.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne