在我的主目录中,我有一个名为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 `('
答案 0 :(得分:2)
Find在所有找到的项目上都有内置执行功能。所以这个命令会做你想要的。
find /home/blabs/2016_10_1/ -type f -exec /path/to/blabs {} \;
答案 1 :(得分:1)
请参阅ParsingLs,为什么 NOT 解析for循环中
find
或ls
的输出。
您使用过程替换语法(<()
),如下所示
#!/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