J'ai un répertoire contenant un groupe de fichiers .txt
, j'ai besoin d'une commande pour renommer ces fichiers en une seule commande, ainsi leur nom sera: file1.txt , file2.txt, file3.txt , etc .
De l'aide ?
Vous pouvez l’utiliser dans le terminal pour renommer les fichiers comme vous le souhaitez,
j=1;for i in *.txt; do mv "$i" file"$j".txt; let j=j+1;done
Cela fera le travail.
Explication:
j
, le définir initialement sur 1*.txt
pour obtenir tous les fichiers txt
.mv
et augmentez le compteur de 1.Vous pouvez utiliser la commande rename, qui est généralement incluse dans une installation par défaut:
c=0 rename 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *
Utilisez le drapeau -n si vous voulez d'abord faire un test:
c=0 rename -n 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *
La façon dont cela fonctionne est, pour chaque argument, il exécute l'expression Perl s///
et effectue le changement de nom de l'original à la chaîne remplacée. Dans la chaîne de remplacement, j'utilise sprintf
pour formater le nom, où j'utilise la variable d'environnement c
comme compteur à partir de 1.
Dans la plupart des cas, vous aurez peut-être également besoin de "0" en majuscule pour chaque numéro. %05d
fait l'affaire, 5 étant le nombre de chiffres.
La commande suivante renommera également les fichiers de manière incrémentielle:
cd (directory containing files )
Puis lancez ce script:
count=1
for i in *; do
mv "${i}" file${count}.`echo "${i}" | awk -F. '{print $2}'`
((++count))
done