2 votes

Comment puis-je changer le nom de plusieurs fichiers dans un dossier

J'ai un dossier avec 1000 fichiers.

Leur nom est comme ci-dessous

...P1_A1 _R2....

...P1_A2 _R2....

...P1_A3_R2....

dont seul le milieu est important comme indiqué

et j'ai un fichier clé .txt dans le même dossier avec ces infos

Sample  P   R   Col
    1   1   A   1
    2   1   A   2
    3   1   A   3

Je veux vérifier le fichier .txt et changer le nom du fichier en conséquence ou le sauvegarder avec un nom dans un autre dossier. par exemple

.._P1_A1_..

devrait être sample1 car quand je regarde le fichier .txt , c'est

Sample  P   R   Col
    1   1   A   1

pour .._P1_A2_..

devrait être sample2 car quand je regarde le fichier .txt , c'est

Sample  P   R   Col
    2   1   A   2

4voto

Stewart Points 1385

Si nous pouvons raisonnablement supposer que tous vos noms sont uniques, je veux dire qu'il n'y a qu'un seul fichier dont le nom contient _P1_A1, un seul avec _P1_A2, etc., vous pouvez faire ceci :

$ awk 'NR>1{print "mv *_P"$2"_"$3$4"* sample"$1}' key.txt 
mv *_P1_A1* sample1
mv *_P1_A2* sample2
mv *_P1_A3* sample3

Awk lit son entrée ligne par ligne et la divise en champs séparés par des espaces. Ainsi, le premier champ est $1, le deuxième $2, etc. Ici, nous traitons le fichier de clés et imprimons la commande mv correcte en la construisant à partir des champs du fichier.

Si vous êtes sûr que les commandes mv imprimées sont correctes, vous pouvez les exécuter avec :

awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X