GNU/Linux >> Tutoriels Linux >  >> Linux

Renommer les fichiers par lots en ligne de commande et Xargs

Cela peut également être fait avec xargs et sed pour changer l'extension du fichier.

ls | grep \.png$ | sed 'p;s/\.png/\.jpg/' | xargs -n2 mv

Vous pouvez imprimer le nom de fichier d'origine avec ce que vous voulez que le nom de fichier soit. Demandez ensuite à xargs d'utiliser ces deux arguments dans la commande move. Pour le one-liner, j'ai également ajouté un grep pour filtrer tout ce qui n'est pas un fichier *.png.


comment renommer le fichier pour n'avoir qu'une seule extension.

cd dir/with/messedup/files

for file in *.png.jpg; do
  mv "$file" "${file%.png.jpg}.jpg"
done

à l'avenir, en utilisant xargs, comment changer l'extension du fichier simular en deuxième commande ?

A ma connaissance, cela ne peut pas se faire. La meilleure façon de le faire serait d'utiliser une boucle for avec substitution de paramètre un peu comme celle ci-dessus :

for file in *.png; do
  convert "$file" -resize "${file%.png}.jpg"
done

Si vous avez des fichiers dans des sous-répertoires que vous souhaitez convertir, vous pouvez diriger find à un while read boucle :

find . -type f -name '*.png' |
while read file; do
  convert "$file" -resize "${file%.png}.jpg"
done

REMARQUE : Il est généralement considéré comme une mauvaise idée d'utiliser la sortie de ls dans un script shell. Bien que votre exemple ait pu bien fonctionner, il y a beaucoup d'exemples où ce n'est pas le cas. Par exemple, si vos noms de fichiers contiennent des retours à la ligne (ce que Unix autorise), ls n'y échappera probablement pas pour vous. (Cela dépend en fait de votre implémentation, ce qui est une autre raison de ne pas utiliser ls dans les scripts ; son comportement varie considérablement d'une boîte à l'autre.) Vous obtiendrez des résultats plus cohérents si vous utilisez soit find dans une boucle while-read ou un globbing de fichier (par exemple *.png ) dans une boucle for.


Linux
  1. Copiez et collez sur la ligne de commande Linux avec xclip

  2. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  3. Comment diviser et combiner des fichiers à partir de la ligne de commande sous Linux

  4. Comment masquer des fichiers et des dossiers dans le gestionnaire de fichiers sans les renommer

  5. Metamorphose 2 - Renommer par lots vos fichiers et dossiers sous Linux

Comment déplacer des fichiers et des répertoires sous Linux (commande mv)

Commande Cp sous Linux (Copier des fichiers)

Commande Stat :Afficher les attributs des fichiers et des répertoires

Recherche des fichiers et dossiers les plus volumineux dans la ligne de commande Linux

Commande Linux tar pour compresser et extraire des fichiers

Renommer des fichiers et des dossiers dans cPanel