Linux 如何将列表中的文件逐个导入脚本?
我有一个文件列表,需要将这些文件导入shell脚本。我可以使用以下命令列出目录中的文件:Linux 如何将列表中的文件逐个导入脚本?,linux,bash,for-loop,ls,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/*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
[-t]表示超时 我希望这有帮助,
cheers Karim您真的要将所有文件通过管道传输到脚本的一个实例中,还是要多次调用脚本,每个文件调用一次?
$ 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...