For*_*ker 1 character-encoding escape-characters
我在一个以括号开头的目录中有很多文件。由于冲突,它们由 Dropbox 生成。转义的任何组合似乎都无济于事:
rm -rf "(*"
rm -rf "\(*"
rm -rf \(*
Run Code Online (Sandbox Code Playgroud)
正如froschutz所提到的,它们似乎不是ASCII字符。我怎样才能知道是否是这种情况,以及有什么解决办法?
shell 使用某些规则解释命令行,您必须在此处考虑这些规则:
您可以使用 \ 对 shell 元字符进行转义,使其表现得像一个普通字符。
您可以使用单引号或双引号,并且在这些大多数(带双引号)或所有(带单引号)shell 元字符中失去了它们的特殊含义。
引号不必在字边界处,因此rm th"is fil"e与rm "this file".
字符 []?* 可用于文件名扩展。不得为此目的引用或转义它们。
因此,您的情况可能的解决方案是rm -rf '('*,rm -rf "("*和rm -rf \(*。我不知道为什么最后一个在你的情况下不起作用。也许括号前有一些空格?
使用以下行,您应该能够查看文件名中是否有任何有趣的字符:
for i in *; do od -c <<< "$i"; done
Run Code Online (Sandbox Code Playgroud)