我必须擦除驱动器并重新安装 Windows,这还需要重新安装 cygwin。
在我的新安装中,
ls -l "*\'*"
回报
ls: cannot access '*\'\''*': No such file or directory
多年来,直到这一点,ls -l *\'*
都会向我提供一个目录和文件列表,其中用户在文件或目录名称中包含单引号。
关于这种情况我可能会错过什么,有什么建议吗?
例如,显然 coreutils 进行了一些更改,导致名称中带有空格的文件被列为“此文件包含空格”,并且必须使用开关/变量将其关闭。
我想知道关于单引号是否对标准使用进行了一些类似的更改。
答案1
*
如果您希望它充当通配符,则不能引用。单引号和双引号都会逃脱它。
双引号也会转义单引号,因此整个字符串*\'*
将按字面意思理解:
$ echo "*\'*"
*\'*
您想要编写不带双引号的字符串,正如您稍后在问题中所写的那样:
ls -l *\'*
另一种可能更适合您的方法是使用命令find
。 (它不遵循与上面相同的引用规则,因此很抱歉造成混淆)。使用 find,您可以使用以下命令以递归方式搜索目录结构,以查找包含单引号的任何文件:
find . -name "*'*"
在此示例中.
代表您当前所在的目录,但您可以将其替换为您想要搜索的任何目录的路径。