我想将颜色传递给查找结果后执行的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)并突出显示另一种颜色执行查找结果!感谢您的帮助或输入!
答案 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"' - '{}' \;