如何将列表中的文件一个一个地传输到脚本中?

How to pipe files one by one from list into script?

我有一个文件列表,需要通过管道传输到 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 脚本中?

我想你正在寻找这个:

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

这样,您为每个文件调用 bash runscript

另一种选择

ls ~/data/2121/*SOMEFILE* | xargs -L1 bash runscript
$ 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 ] 用于超时

希望对您有所帮助, 干杯卡里姆