如何在Bash的find -exec命令中传递颜色给echo?

3
我想在find结果后执行echo命令并传递颜色值:
例如,以下代码可以正常工作:
RED='\033[0;31m'
echo -e "${RED}Red"

但是这个不起作用:
RED='\033[0;31m'
find . -print -name test -exec bash -c 'echo -e "${RED}{}"' \;

这种方法不可行吗?或者像使用-printf这样的另一个选项更好?我的目标是查看find输出(使用-print),并以另一种颜色突出显示执行的find结果!感谢帮助或建议!

Bash中单引号和双引号的区别 - Cyrus
1个回答

0

由于-exec bash -c会生成一个新的子shell,因此您需要导出RED变量,否则子shell将无法访问RED

export RED='\033[0;31m'

此外,find 命令应该是:

find . -name test -exec bash -c 'echo -e "${RED}{}"' \;

你有一个额外的-print,它将打印所有条目,而不仅仅是命名为test的条目。

更喜欢在参数列表中传递文件名给bash -c的形式:

find . -name 'test' -exec bash -c 'echo -e "$RED$1"' - '{}' \;

1
谢谢,解决了!我是新手,还不熟悉Bash...我想要看到'find'的详细输出,因此我设置了-print选项。 - Madhias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接