mv
C'est une ligne de commande de base conçue pour faire une chose et bien le faire (philosophie Unix): déplacer des fichiers ou des répertoires .
Vous pouvez pirater STDOUT
& STDIN
¹ pour modifier à la volée la chaîne de destination, mais ce n'est tout simplement pas un hack intelligent
renommer (celui de Perl)
Il existe d'autres outils portant le même nom qui peuvent ou non être en mesure de le faire, alors soyez prudent.
Quand les gens parlent rename
, nous pensons à celui-ci, pas à ELF
celui, le moins puissant (magique?).
Ce n'est pas basique, c'est Perl. Vous pouvez passer certaines fonctions de Perl à l'intérieur, et c'est extrêmement puissant.
Considérez cet exemple:
Vous voulez renommer un tas de fichiers comme
foobar_1.txt
foobar_2.txt
foobar_3.txt
Vous pouvez ajouter des zéros aux chiffres sprintf()
comme ceci (en utilisant regex, heh, c'est Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Maintenant vous avez :
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Pas vraiment une commande de base, n'est-ce pas?
renommer n'est pas vraiment conçu pour déplacer des répertoires , mais il peut le faire:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
Le fichier déplacé
/tmp/file
¹ du code que nous voyons sur les *.stackexchange.*
sites Web
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Ce n'est pas la voie à suivre , c'est tout simplement un buggy, juste pour expliquer pourquoi utiliser le bon outil au bon moment
type -a rename
etrename --version
?