如何执行shell自动化任务?

时间:2017-02-16 10:40:06

标签: bash shell

在我的主目录中,我有一个名为blabs的脚本,我将一个文件作为参数传递给这个bash脚本,如:

./blabs \home\blabs\someFileName

这将给出结果,一切正常。

现在我想自动执行此任务。我在主目录中的名为2016_10_1的目录中有1000个文件。所以我想将每个文件作为参数传递给脚本。

我写了一个小片段,但它无法正常工作。任何人都可以帮我这个

for i in (find /home/blabs/2016_10_1/ -type f);do "./blabs /home/blabs/2016_10_1/$i";done

错误日志:

-bash: syntax error near unexpected token `('

3 个答案:

答案 0 :(得分:2)

Find在所有找到的项目上都有内置执行功能。所以这个命令会做你想要的。

find /home/blabs/2016_10_1/ -type f -exec /path/to/blabs {} \; 

答案 1 :(得分:1)

  

请参阅ParsingLs,为什么 NOT 解析for循环中findls的输出。

您使用过程替换语法(<()),如下所示

#!/bin/bash

while IFS= read -r file
do
    /path/to/blabs "$file"
done< <(find /home/blabs/2016_10_1/ -type f)

find的输出一次被送到while循环,并在其上执行脚本./blabs

答案 2 :(得分:1)

是的,正如Oliv建议的那样,您可以通过添加$

来快速解决此问题
for i in $(find . -type f); do echo "THIS $i"; done