linux查找exec位置参数

时间:2013-12-10 18:16:13

标签: linux find exec csh

我目前正在使用以下行来查找许多脚本并执行它们。脚本命名为:my_script_0.sh,my_script_1.sh等。

find $MY_HOME/SHELL/my_script_[0-9].sh -type f -exec csh -c '"$1" >& "$logfile" &' {} \;

这很好用,但现在我想为每个执行的脚本创建一个唯一的$logfile。 我意识到使用awk我可以做这样的事情来获取文件的数量,然后可能在日志文件名中使用它。

find $MY_HOME/SHELL/my_script_[0-9].sh -type f | awk -F"\\.|_" '{print $4}'

问题是我不相信我可以使用awk与原始语句,因为我需要位置参数为完整路径/文件名。

理想情况下,我想在find -exec命令中使用另一个位置参数。它存在吗?

1 个答案:

答案 0 :(得分:1)

-exec的{​​{1}}选项只会占用给定的参数。因为你传递它find它会启动一个新的shell,你可以选择传递一些参数(一个是csh -c ...)。然后将这些参数设置为新shell中的位置参数{}。在这种情况下,$1, $2, $3, ... ,$n结果将逐个传递,并在shell中用作find

我建议使用代替循环的$1命令的替代方法:

find

foreach script ( $MY_HOME/SHELL/my_script_[0-9].sh ) csh -c "$script >& $script:r.log" end 删除了它附加的变量的扩展名,因此我们获取了脚本:r的日志文件:my_script_n.log

我在C-shell语法上检查了这些引用: