Mehrere Dateien im UNix-Verzeichnis umbenennen

Mehrere Dateien im UNix-Verzeichnis umbenennen

Ich habe Dateien im Unix-Verzeichnis im folgenden Format mithilfe von sed oder anderen Befehlen.

Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp

Ich möchte diese Dateien im folgenden Format umbenennen

Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp

Antwort1

for file in Owner.Env.File_10513_1200_ver*.expdp; do
    mv "$file" "${file/010513_1200/100613_2300}"
done

Antwort2

Wenn es nicht zu viele (mehrere zehntausend) Dateien sind, sollte dies funktionieren (prüfen Sie anschließend, ls Owner.Env.File_010513_1200_ver*.expdpob noch Dateien übrig sind und wiederholen Sie ggf. den Befehl):

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

Bei GNU gibt es für große Mengen von Dateien (und Dateien mit seltsamen Namen) folgende Alternative:

find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
  xargs -0 rename File_010513_1200_ File_100613_2300_ 

verwandte Informationen