2016-05-08 2 views
0

У меня есть сценарий bash, который удаляет первые пять строк и последние девять строк в указанном пользователем файле. Мне нужно, чтобы он работал на ~ 100 файлов в день, есть ли способ запустить скрипт по всему каталогу, а затем вывести каждый файл в отдельный каталог с тем же именем? Вот сценарий, который я использую.Запустить скрипт bash для всего каталога

read -e file 
$file | sed '1,7d' | head -n -9 > ~/Documents/Databases/db3/$file 
rm $file 

Я настроил его на цикл из-за большого количества файлов, но это ядро ​​сценария.

ответ

2

Вы можете сделать:

for file in ~/Documents/Databases/db3/*; do 
    [ -f "$file" ] && sed '1,7d' "$file" | head -n -9 > /out/dir/"${file##*/}" 
done 

Предполагая, что каталог ввода является ~/Documents/Databases/db3/ и выходной каталог является /out/dir/.

+0

Это похоже на «$ file» как полный путь к файлу, поэтому я не могу поместить его в новый каталог. – Matt

+0

@Matt My bad..fixed .. – heemayl