Если вы запустите эту команду, она будет использовать GNU Parallel , чтобы запустить новую оболочку bash
в каждой из папок параллельно, и запустить ls
в каждой из них параллельно независимо:
parallel --dry-run -k 'cd {} && ls' ::: */
Пример вывода
cd Dir01/ && ls
cd Dir02/ && ls
cd Dir78/ && ls
Если вы удалите --dry-run
, он сделает это по-настоящему.
Итак, вместо запуска ls
, давайте теперь посмотрим на использование команды rename
в каждом из каталогов. Следующее переименует все файлы в каталоге с последовательно увеличивающимися номерами ($N
):
rename --dry-run '$_=$N' *
Пример вывода
'file87' would be renamed to '1'
'file88' would be renamed to '2'
'file89' would be renamed to '3'
'fred' would be renamed to '4'
Все вышесказанное предполагает, что вы хотите команду:
parallel --dry-run -k 'cd {} && rename --dry-run "s/.*/{#}_\$N/" *' ::: */
Вы можете запустить его как есть, и он просто покажет вам, что он собирается делать, фактически ничего не делая.
Если вам нравится внешний вид этого, удалите первый --dry-run
и запустите его снова, и он фактически войдет в каждый подкаталог и выполнит пробное переименование, опять же, фактически не меняя ничего.
Если вам все еще нравится внешний вид команды, сделайте небольшую копию ваших файлов где-нибудь во временном каталоге и попробуйте удалить оба параметра --dry-run
, если они соответствуют вашим потребностям.