我有一个需要管道进入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
脚本?
答案 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]用于超时
我希望这有帮助, 欢呼卡里姆