Мне бы хотелось иметь более элегантное решение для массового переименования файлов, как показано ниже. Файлы были в формате DEV_XYZ_TIMESTAMP.dat
, и мы нуждались в них как T-XYZ-TIMESTAMP.dat
. В конце я скопировал их все (чтобы быть на одной стороне) в папку renamed
:
ls -l *dat|awk '{system("cp " $10 " renamed/T-" substr($10, index($10, "_")+1))}'
Итак, сначала я перечислил все файлы данных, затем взял 10-й столбец (имя файла) и выполнил команду, используя функцию system в awk. По сути, команда копировала оригинальное имя файла в папку переименованную с новым именем файла. Новое имя файла было создано путем удаления префикса (функция awk substring ) перед (включая) _ и добавления префикса "T-".
Эффективно:
cp DEV_file.dat renamed/T-file.dat
Is Есть ли способ использовать cp
или mv
вместе с некоторыми правилами регулярных выражений, чтобы добиться того же более элегантным способом?
Thx