如何将文件从列表逐个传递到脚本?

时间:2015-09-29 03:36:40

标签: linux bash for-loop ls

我有一个需要管道进入shell脚本的文件列表。我可以使用以下命令列出目录中的文件:

ls ~/data/2121/*SOMEFILE*

导致:

2121.SOMEFILEaa
2121.SOMEFILEab
2121.SOMEFILEac
and so on...

我有另一个脚本对单个文件(2121.SOMEFILEaa)执行一些处理,我使用以下命令运行该文件:

bash runscript ../data/2121/2121.SOMEFILEaa

但是,我需要通过将通过ls生成的文件列表中的单个文件传递到脚本中来提高效率。如何将ls ~/data/2121/*SOMEFILES*命令的结果 - 逐个文件 - 传递到runscript脚本?

3 个答案:

答案 0 :(得分:3)

另一个选择

ls ~/data/2121/*SOMEFILE* | xargs -L1 bash runscript

答案 1 :(得分:2)

我认为你正在寻找这个:

for file in ~/data/2121/*SOMEFILE*; do
    bash runscript "$file"
done

通过这种方式,您可以为每个文件调用bash runscript

答案 2 :(得分:1)

$ cat pipe.sh

#!/bin/bash
## Store data from pipe to variable $PIPE ------#
_read_pipe(){                                   #
    while read -t 10 pipe; do
        if [ -n "$pipe" ] ;then
            PIPE="$PIPE $pipe" ;fi ;done ;}


## your code -----------------------------------#
_read_pipe                                      #   
for kung_foo in $PIPE ;do
    echo $kung_foo ;done
$ ls 2121.SOMEFILE* | ./pipe.sh
2121.SOMEFILEaa
2121.SOMEFILEab
2121.SOMEFILEac
and so on...

[-t]用于超时

我希望这有帮助, 欢呼卡里姆