Estou tentando remover todos os arquivos em um diretório do Windows 7 com nomes de arquivos que contêm colchetes; (
e )
:
Usando MinGW:
rm *(*)*
Eu recebo um erro:
sh: syntax error near unexpected token '('
Suponho que isso ocorre porque o rm
comando vê um colchete como algum tipo de entrada especial. O que eu poderia fazer?
rm '*(*)*'
dá-merm: cannot lstat
* ( ) ': Nenhum arquivo ou diretório.
rm * (*) * `funciona (mas também deseja excluir diretórios com essa correspondência, mas é isso que o original do OP também deseja, fornecendo uma linha de erro).*(*)*
, mas OP quer trabalhar em todos os arquivos que contêm(
e)
. Tente você mesmo com umtouch 'a(b)c'
. Entãorm '*(*)*'
não funciona em todos esses arquivos. Também não está no bash no Linux! Elerm *\(*\)*
funciona tanto no Linux quanto no mingw.Você pode fazer o seguinte:
Para testar, usaria o
-print
argumento primeiro:Se você quiser fazer isso em todos os subdiretórios, poderá omitir o
-maxdepth 1
Se o
-delete
não funcionar, você pode tentar:Editar: Incluído o
-type f
para fazer isso somente em arquivos (e não em diretórios) iguais aos derm
.fonte