从 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) 命令中删除一些输出行的主要内容,如果未能解决你的问题,请参考以下文章

shell 中的find命令时间参考点?

linux shell:find命令批量删除文件夹或文件夹

shell脚本删除30天之前日志

Linux中的find和grep命令对查找到的文件如何处理啊

Linux shell 命令 :删除所有日志文件保留最新的 3 个文件

Linux shell 命令 :删除所有日志文件保留最新的 3 个文件