从 find(shell) 命令中删除一些输出行
Posted
技术标签:
【中文标题】从 find(shell) 命令中删除一些输出行【英文标题】:Remove some lines of output from find(shell) command 【发布时间】:2017-11-15 08:42:29 【问题描述】:我正在尝试查找本地计算机上所有 git 存储库的列表。我确实得到了所有这些,但我也得到了一些在输出中权限被拒绝的存储库
find . -name .git -type d -prune | sed '/Permission/d'
命令的输出是
find: ./.Trash/Fuze_old.app/Contents/Frameworks/Fuze Helper.app: Permission denied
./.nvm/.git
./.oh-my-zsh/.git
./.Trash/AutoLayout/.git
./.Trash/DemoProject/.git
find: ./Library/Python: Permission denied
./.Trash/NavView/.git
./.Trash/Something/.git
./.zsh/zsh-autosuggestions/.git
我不想要 Permission denied 的行。
我如何得到它?
【问题讨论】:
那些可能会去stderr,你可以用2> /dev/null
丢弃它们。
How can I exclude all "permission denied" messages from "find"?的可能重复
【参考方案1】:
“权限被拒绝”行可能出现在 STDERR 而不是 STDOUT 上,这就是您的 sed
命令无效的原因。试试这个(如果你在一个类 Unix 系统上):
find . -name .git -type d -prune 2>/dev/null
【讨论】:
以上是关于从 find(shell) 命令中删除一些输出行的主要内容,如果未能解决你的问题,请参考以下文章
Linux中的find和grep命令对查找到的文件如何处理啊