Переименовать несколько файлов в каталоге UNIX

Переименовать несколько файлов в каталоге UNIX

У меня есть файлы в каталоге unix в следующем формате, которые я создал с помощью sed или некоторых других команд.

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

Я хочу переименовать эти файлы в следующем формате:

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

решение1

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

решение2

Если файлов не слишком много (несколько десятков тысяч), то это должно сработать (позже проверьте, ls Owner.Env.File_010513_1200_ver*.expdpостались ли файлы, и повторите команду, если таковые имеются):

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

В GNU альтернативой для огромного количества файлов (и файлов со странными именами) является:

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

Связанный контент