команда rm: удалить файлы с именами, содержащими скобки

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

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

rm *(*)*

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

sh: syntax error near unexpected token '('

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

5
задан atomh33ls
источник

2 ответов

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

$ touch 'aaa(bbb)ccc'
$ rm *\(*\)*
$ ls
$
3
отвечен RedGrittyBrick 2013-10-08 10:19:50
источник

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

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
отвечен Rik 2013-10-08 09:33:38
источник

Другие вопросы bash command-line mingw rm windows-7