如何在bash find -exec命令中传递颜色以回显?

时间:2016-11-26 08:08:18

标签: bash colors find echo

我想将颜色传递给查找结果后执行的echo命令:

例如,这有效:

RED='\033[0;31m'
echo -e "${RED}Red"

但是这个不起作用:

RED='\033[0;31m'
find . -print -name test -exec bash -c 'echo -e "${RED}{}"' \;

这样做是不可能的,还是像使用-printf更好的另一种选择?我的目标是看到找到输出(带-print)并突出显示另一种颜色执行查找结果!感谢您的帮助或输入!

1 个答案:

答案 0 :(得分:0)

您需要导出RED变量,因为-exec bash -c会产生一个新的子shell,而RED除了导出外,还不能用于子shell:

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"' - '{}' \;