Я хотел бы удалить []-_"
и т.д. от нескольких имен файлов, которые расположены в различных подкаталогах.
Найденный этим
rename "s/\[|\]/_/g" *
но это работает только в определенном подкаталоге а не для других файлов, которые являются в другом месте
Там путь состоит в том, чтобы сделать это?
Если Вы хотите применить переименование рекурсивно ко всем файлам в иерархии каталогов в соответствии с Вашим текущим рабочим каталогом, можно использовать Bash globstar
функция. Необходимо активировать это сначала. Введите следующее:
shopt -s globstar
rename "s/\[|\]/_/g" **
, Другими словами, Вы только для активации globstar
функция затем можно выполнить команду с двумя звездами (**
) вместо только одного (*
). Это будет соответствовать всем файлам в иерархии каталогов в соответствии с текущим рабочим каталогом, т.е. независимо от того, как глубоко они вкладываются в соответствии с текущим рабочим каталогом.
, Если Вы только хотите переименовать весь файлы в соответствии с текущим рабочим каталогом без риска переименования соответствия именам каталогов также, можно использовать find
вместо этого:
find . -type f -execdir rename -- 's/\[|\]/_/g' {} +
Это будет соответствовать всему файлы содержащий символы [
или ]
где угодно в структуре каталогов в соответствии с Вашим текущим рабочим каталогом, затем выполнять Вашу стандартную программу переименования на подкаталогах, содержащих любые файлы соответствия.