gpt4 book ai didi

linux - Bash shell 脚本函数给出 "find: missing argument to ` -exec'"error

转载 作者:IT王子 更新时间:2023-10-29 01:26:30 31 4
gpt4 key购买 nike

我在 Bash shell 脚本中编写了一个函数,用于在 Linux 树中搜索与包含正则表达式的模式匹配的文件名,并使用颜色突出显示:

function ggrep {
LS_="ls --color {}|sed s~./~~"
[ -n "$1" -a "$1" != "*" ] && NAME_="-iname $1" || NAME_=
[ -n "$2" ] && EXEC_="egrep -q \"$2\" \"{}\" && $LS_ && egrep -n \"$2\" --color=always \"{}\"|sed s~^B~\ B~" || EXEC_=$LS_
FIND_="find . -type f $NAME_ -exec sh -c \"$EXEC_\" \\;"
echo -e \\e[7m $FIND_ \\e[0m
$FIND_
}

例如ggrep a* 列出当前目录树下所有以a开头的文件,

ggrep a* xa 开头并包含 x

的文件列表

当我运行它时,我得到:

find: missing argument to `-exec'

即使我在将“echo”输出的行复制并粘贴到终端时得到了正确的输出。谁能告诉我我做错了什么?

其次,如果 ggrep * x 列出所有包含 x 的文件,但 * 扩展为文件名列表,我需要使用 \*'*' 代替。有没有解决的办法?谢谢!

最佳答案

使用 \; 而不是 \\; 终止 find 命令。

find . -type f $NAME_ -exec sh -c \"$EXEC_\" \;

关于linux - Bash shell 脚本函数给出 "find: missing argument to ` -exec'"error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922741/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com