renommer une liste de fichiers en fonction d'un fichier texte


8

J'ai une liste de fichiers dans un dossier, que j'aimerai renommer en fonction d'un fichier texte. Par exemple:

Ce sont les 5 fichiers du dossier.

101_T1.nii
107_T1.nii 
109_T1.nii
118_T1.nii
120_T1.nii

Je voudrais les faire renommer en utilisant un fichier texte contenant une liste de nouveaux noms de fichiers dans le même ordre, sans l'extension .nii:

n01
n02
n03
n04
n05

Comment puis-je m'y prendre?


3
ls | paste - /the/text/file | xargs -n2 mv
Stéphane Chazelas

Réponses:


9

une ligne, cette commande lit le txt 'list' et analyse pour chaque ligne un fichier.

for file in *.nii; do read line;  mv -v "${file}" "${line}";  done < list

3

Vous pourriez faire:

paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done

... où le fichier nommé "OLD" contient les anciens noms de fichier et le fichier nommé "NEW" a les nouveaux noms correspondants (1: 1).


0

Si votre shell prend en charge la substitution de processus, essayez:

paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv

ou vous pouvez le faire POSIX:

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.