OS X 终端通配符对某些路径不起作用

OS X 终端通配符对某些路径不起作用

好吧,这很奇怪,希望这里有人可以解释发生了什么。

我正在使用 OS X 10.9.4,我想列出目录中的文件(并使用 * 进行过滤)

我想要在我的用户目录和我儿子的目录的下载目录中查找 zip 文件。

这将显示所有文件,包括以 .zip 结尾的文件:sudo ls /Users/Jamie/Downloads/
但是当我尝试过滤它时:sudo ls /Users/Jamie/Downloads/*zip
我得到了No such file or directory

但是同样的命令在我的目录中运行良好!?sudo ls /Users/Hamish/Downloads/*zip

事实上,即使这样也会No such file or directory在他的路径上产生错误,但不是我的:sudo ls /Users/Jamie/Downloads/*

答案1

路径名扩展发生在运行命令时,因此在运行 sudo 之前进行扩展。

您可以使用以下命令在 sudo 中实例化一个新的 shell:sudo sh -c "ls /Users/Jamie/Downloads/*.mp3"

答案2

或者您可以使用grep来过滤结果。因此

$ sudo ls -l /Users/other/Library/Keychains/*keychain
ls: /Users/other/Library/Keychains/*keychain: No such file or directory

会失败,但使用grep会起作用

 sudo ls -l /Users/other/Library/Keychains|grep .keychain
 -rw-r--r--   1 other staff    48K Jan 31 18:27 login.keychain

此外,grep您还可以使用该选项搜索多个项目-e

 $ sudo ls -laRh /Users/other/Library/Logs|grep -e Finder -e Google
  -rw-r--r--   1 other  staff    18K Jan 31 18:27 GoogleSoftwareUpdateAgent.log
  -rw-------   1 other  staff    56K Jan 31 18:27 .Finder_2014-06-25-165714.crash.plist
  -rw-------@  1 other  staff    52K Jan 31 18:27 Finder_2014-06-25-165714.crash

希望这可以帮助。

相关内容