我正在尝试在linux中运行bash脚本(ubuntu但也有fedora),但是find命令不起作用。
search=\"*${exten[iterext]}\"
find $direc{iterdir} $r_option -iname $search exec -rm {} \\\;
现在解释变量: Exten是从文本文件读取的文件扩展名的数组(这里没问题) direc也是从命令行读取的目录数组。 Iterdir和iterext是cicle整数变量。
现在我有两个问题:
1-如果我在脚本中运行它,那么这个find命令不会删除或显示;但是如果我在查找之前放置一个echo并将输出粘贴到命令提示符下找到工作正常。我已经尝试过ubuntu和fedora下的脚本,所以我认为它不是bash配置问题。我应该注意到问题似乎是$ search,因为我用一个硬编码的字符串替换了$ search(比如“* txt”),它在脚本内部工作,所以它似乎是一个报价问题。
2 - 我运行整个find命令并获得find:缺少'-exec'的参数
请帮忙:-(这让我疯了。
答案 0 :(得分:2)
通过将所有内容放在find
命令中开始简单,然后担心参数化。
${exten[iterext]}
应为${exten[$iterext]}
$direc{iterdir}
应为${direc[$iterdir]}
exec -rm
应为-exec rm
\\\;
应为\;
由于echo
,以下内容将执行干运行。当您对输出感到满意时,只需删除echo
即可执行删除。
find "${direc[$iterdir]}" "$r_option" -name "*${exten[$iterext]}" -exec echo rm {} \;
答案 1 :(得分:0)
你对引号的使用对我来说似乎有些奇怪。试试这个:
find "$direc{iterdir}" $r_option -iname "*${exten[iterext]}" -exec -rm "{}" ";"
哦,然后使用-x
选项运行shell脚本。这将在执行之前打印每个命令行。
set -x
find "$direc{iterdir}" $r_option -iname "*${exten[iterext]}" -exec -rm "{}" ";"
set +x