Wie ändere ich Dateinamen in einem Verzeichnis in neue Namen, die in einer Datei enthalten sind?

Wie ändere ich Dateinamen in einem Verzeichnis in neue Namen, die in einer Datei enthalten sind?

Ich habe ein Verzeichnis voller Dateinamen, die geändert werden müssen. Ich muss nicht einfach ein Suffix oder Präfix umbenennen, sondern die Dateien komplett umbenennen.

Ich habe die neuen Dateinamen in einer Datei mit dem Namen „new_names“ fortgesetzt.

Mit welchem ​​Befehl kann ich die in new_names enthaltenen Namen lesen und die Dateien in einem Verzeichnis umbenennen?

Antwort1

Damit können Sie eine Liste mit Befehlen generieren mv:

paste /path/to/new_names <(ls /path/to/files | grep -v new_names) | awk '$2 !~ /^$/ {print "mv " $2,$1}'

Wenn es gut aussieht, können Sie es wie folgt ausführen:

cd /path/to/files
$( paste /path/to/new_names <(ls /path/to/files | grep -v new_names) | awk '$2 !~ /^$/ {print "mv " $2,$1}' )

verwandte Informationen