Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage, damit sie zum Thema von Ask Ubuntu passt.
Vor 3 Jahren geschlossen.
Verbessern Sie diese Frage
Ich habe einen Ordner mit 1000 Dateien.
Ihr Name ist wie unten
…P1_A1 _R2….
…P1_A2 _R2….
…P1_A3 _R2….
wobei nur die Mitte als hervorgehoben wichtig ist
und ich habe einen Schlüssel .txt
Datei im selben Ordner mit diesen Informationen
Sample P R Col
1 1 A 1
2 1 A 2
3 1 A 3
Ich möchte die .txt
überprüfen Datei und ändern Sie den Namen der Datei entsprechend oder speichern Sie mit unter einem Namen in einem anderen Ordner. zum Beispiel
.._P1_A1_..
sollte sample1
sein denn wenn ich mir die .txt
ansehe Datei , es ist
Sample P R Col
1 1 A 1
für die
.._P1_A2_..
sollte sample2
sein denn wenn ich mir die .txt
ansehe Datei , es ist
Sample P R Col
2 1 A 2
Akzeptierte Antwort:
Wenn wir davon ausgehen können, dass alle Ihre Namen eindeutig sind, meine ich, dass es nur eine Datei gibt, deren Name _P1_A1
enthält , nur einer mit _P1_A2
usw. können Sie dies tun:
$ 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 liest seine Eingabe Zeile für Zeile und teilt sie auf Whitespace in Felder auf. Das erste Feld ist also $1
, die zweite $2
usw. Hier verarbeiten wir die Schlüsseldatei und drucken den korrekten mv
Befehl, indem Sie ihn aus den Feldern der Datei erstellen.
Wenn Sie sicher sind, dass mv
ausgegebenen Befehle korrekt sind, können Sie sie ausführen mit:
awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt