2

Я пытаюсь удалить все файлы в каталоге Windows 7 с именами файлов, содержащими скобки; ( и ):

Использование MinGW:

rm *(*)*

Я получаю ошибку:

sh: syntax error near unexpected token '('

Я предполагаю, что это потому, что команда rm видит скобку как своего рода специальный ввод. Что я мог сделать вместо этого?

2 ответа2

3

Вы можете сделать следующее:

find . -type f -name "*(*)*" -delete -maxdepth 1

Для тестирования я бы сначала использовал аргумент -print :

find . -type f -name "*(*)*" -print -maxdepth 1

Если вы хотите сделать это во всех подкаталогах, вы можете опустить -maxdepth 1

Если -delete не работает, вы можете попробовать:

find . -type f -name "*(*)*" -exec rm -rf {} \;

Редактировать: Включен -type f чтобы сделать это только для файлов (а не каталогов), как в rm .

3

Вы можете "экранировать" определенные метасимволы, используя префикс с обратной косой чертой.

$ touch 'aaa(bbb)ccc'
$ rm *\(*\)*
$ ls
$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .