如何在 Bash 中的分隔符 ` 上拆分字符串?

How do I split a string on a delimiter ` in Bash?

如何通过管道仅在以​​下管道上获得 modules/bx/motif

$ find . | grep denied
find: `modules/bx/motif': Permission denied

你可以重定向 STDOUT(你想要的错误出现的地方),这样你就可以用其他工具处理它,然后扔掉 STDIN(其中包含你不关心的 non-errors)然后使用 cut(或其他一百种方法中的任何一种)来提取您需要的位:

find . 2>&1 >/dev/null | cut -d"‘" -f2 | cut -d"’" -f1

您也可以使用 built-in find 过滤器之一(例如 -perm )来挑选这些文件,但您必须检查 findq 手册页了解详细信息。

find . -not -readable 可能对您有所帮助。

就是这样,使用sed:

find . 2>&1 | sed 's/^[^:]*: .\(.*\).: Permission denied//p;d'

或仅使用

你的问题代表 :

string=$'find: `modules/bx/motif7: Permission denied'
echo $string 
find: `modules/bx/motif': Permission denied

part=${string#*\`} 
echo ${part%\'*}
modules/bx/motif