2015-09-29 3 views
3

У меня есть список файлов, которые мне нужно передать в сценарий оболочки. Я могу перечислить файлы в директории, используя следующее:Как передавать файлы один за другим из списка в скрипт?

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

Вы действительно хотите, чтобы трубы все файлы в один экземпляр скрипта, o r вызывать скрипт несколько раз, один раз для каждого файла? – Keith

ответ

2

Я думаю, что вы ищете это:

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

Таким образом, вы вызываете bash runscript для каждого файла.

2

Другой вариант

ls ~/data/2121/*SOMEFILE* | xargs -L1 bash runscript 
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] для тайм-аута

Я надеюсь, что это помогает, ура Карим

Смежные вопросы