如何将列表中的文件一个一个地传输到脚本中?
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 ] 用于超时
希望对您有所帮助,
干杯卡里姆
我有一个文件列表,需要通过管道传输到 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 ] 用于超时
希望对您有所帮助, 干杯卡里姆