好吧,这很奇怪,希望这里有人可以解释发生了什么。
我正在使用 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
希望这可以帮助。