Zsh 查找权限被拒绝 - 应用程序保存状态



每当我在 zsh 中使用 find 命令时,如果我让它从用户级别运行,它总是输出特定的权限被拒绝消息(除了任何找到的路径(例如:

$ find "/Users/usr" -name "Python.gitignore"
/Users/usr/Dropbox/Programming/Git/gitignore/Python.gitignore
find: /Users/usr/Library/Saved Application State/com.bitrock.appinstaller.savedState: Permission denied

但是,如果它在/Users/usr的任何子目录上运行(Users/usr/Library除外(,则它可以按预期工作:

$ find "/Users/usr/Dropbox" -name "Python.gitignore"
/Users/vivekjha/Dropbox/Programming/Git/gitignore/Python.gitignore

什么是"保存的应用程序状态",如何防止在运行find时输出此错误消息?

如果要隐藏 find 命令中的所有权限错误消息,可以直接将其 stderr 重定向到/dev/null

find "/Users/usr" -name "Python.gitignore" 2> /dev/null; 

但是,您可能会隐藏所需的其他错误消息,因此您可以通过以下方式将其过滤掉:

 find "/Users/usr" -name "Python.gitignore" 2>&1 | grep -v ": Permission denied$"

找到的替代方法是使用 zsh 通配。以下内容很可能会返回您想要的结果。

$ print -l /Users/usr/**/Python.gitignore(N)

最新更新