Специальные символы команды Directory и Subdirectory Rename в именах файлов

Я хотел бы удалить []-_" и т.д. от нескольких имен файлов, которые расположены в различных подкаталогах.

Найденный этим

rename "s/\[|\]/_/g" * 

но это работает только в определенном подкаталоге а не для других файлов, которые являются в другом месте

Там путь состоит в том, чтобы сделать это?

0
задан 9 August 2017 в 16:26

1 ответ

Если Вы хотите применить переименование рекурсивно ко всем файлам в иерархии каталогов в соответствии с Вашим текущим рабочим каталогом, можно использовать Bash globstar функция. Необходимо активировать это сначала. Введите следующее:

shopt -s globstar
rename "s/\[|\]/_/g" **

, Другими словами, Вы только для активации globstar функция затем можно выполнить команду с двумя звездами (**) вместо только одного (*). Это будет соответствовать всем файлам в иерархии каталогов в соответствии с текущим рабочим каталогом, т.е. независимо от того, как глубоко они вкладываются в соответствии с текущим рабочим каталогом.

, Если Вы только хотите переименовать весь файлы в соответствии с текущим рабочим каталогом без риска переименования соответствия именам каталогов также, можно использовать find вместо этого:

find . -type f -execdir rename -- 's/\[|\]/_/g' {} +

Это будет соответствовать всему файлы содержащий символы [ или ] где угодно в структуре каталогов в соответствии с Вашим текущим рабочим каталогом, затем выполнять Вашу стандартную программу переименования на подкаталогах, содержащих любые файлы соответствия.

1
ответ дан 2 November 2019 в 19:54

Другие вопросы по тегам:

Похожие вопросы: