2 我试图删除Windows 7目录中包含括号的文件名的所有文件; ( 和 ): 使用MinGW: rm *(*)* 我收到一个错误: sh: syntax error near unexpected token '(' 我认为这是因为 rm command将括号视为某种特殊输入。我该怎么做呢? windows-7 command-line bash rm mingw — atomh33ls source
3 您可以通过使用反斜杠作为前缀来“转义”特定的元字符。 $ touch 'aaa(bbb)ccc' $ rm *\(*\)* $ ls $ — RedGrittyBrick source rm '*(*)*' 给我 rm: cannot lstat *( ) ': 没有相应的文件和目录 . rm *(*)*`有效(但也希望删除具有此匹配的目录,但这也是OP的原始要求,给出错误行)。 — Rik 使用引号对我不起作用。尽管逃脱反斜杠确实如此。 @Rik - 道歉 - 我并不具体。我正在查看的目录没有子目录。 — atomh33ls 1 @RedGrittyBrick第一种方法 只要 适用于 一 文件命名 *(*)*OP希望继续努力 所有 档 含 ( 和 )。自己尝试一下 touch 'a(b)c'。然后 rm '*(*)*' 不起作用 所有 这些文件。也不是在Linux上的bash!该 rm *\(*\)* 确实适用于Linux和mingw。 — Rik 1 @Rik:谢谢,我知道这一点(这就是为什么我提到“所有元字符”) - 但是在这个答案中包含它可能会让人感到困惑 - 我会删除它。 — RedGrittyBrick
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。 — Rik source
rm '*(*)*'
给我rm: cannot lstat
*( ) ': 没有相应的文件和目录.
rm *(*)*`有效(但也希望删除具有此匹配的目录,但这也是OP的原始要求,给出错误行)。