Vuoi migliorare questa domanda? Aggiorna la domanda in modo che sia in argomento per Chiedi a Ubuntu.
Chiuso 3 anni fa.
Migliora questa domanda
Ho una cartella con 1000 file.
Il loro nome è come sotto
…P1_A1 _R2….
…P1_A2 _R2….
…P1_A3 _R2….
di cui solo il centro è importante come evidenziato
e ho una chiave .txt
file nella stessa cartella con queste informazioni
Sample P R Col
1 1 A 1
2 1 A 2
3 1 A 3
Voglio controllare il .txt
file e modificare il nome del file di conseguenza o salvare con un nome in un'altra cartella. per esempio
.._P1_A1_..
dovrebbe essere sample1
perché quando guardo il .txt
file , è
Sample P R Col
1 1 A 1
per il
.._P1_A2_..
dovrebbe essere sample2
perché quando guardo il .txt
file , è
Sample P R Col
2 1 A 2
Risposta accettata:
Se possiamo tranquillamente presumere che tutti i tuoi nomi siano univoci, voglio dire che esiste un solo file il cui nome contiene _P1_A1
, solo uno con _P1_A2
ecc, puoi farlo:
$ 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 legge il suo input riga per riga e lo divide in campi su spazi bianchi. Quindi il primo campo è $1
, il secondo $2
ecc. Qui stiamo elaborando il file delle chiavi e stampando il mv
corretto comando compilandolo dai campi del file.
Se sei sicuro di mv
i comandi stampati sono corretti, puoi eseguirli con:
awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt