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