Писал сестре на днях баш-скрипт, который выводит содержимое файлов в дереве каталогов и после каждого файла пишет "End of file". Листинг ниже, но проблема в том, что после каждой из директорий он тоже пишет End of file, как можно этого избежать?
Листинг:
#!/bin/bash
# временная переменная
temp=0;
# ищем в папке $1 файлы $2 сортируем и выводим на экран, построчно обрабатывая
find $1 | grep $2 | sort | cat | while read line
do
# вычленяем имя файла и путь до него
filename=$(basename $line);
dirname=$(dirname $line);
# если такая директория была, то тупо выводим имя файла с табуляцией.
# \t - это табуляция. ключ -e - это разрешение на использование \t для echo
if [ $temp = $dirname ]; then
echo -e "\t$filename";
# если новая директория, то выводим полный путь с именем файла через двоеточие
# sed 's/1/2/' - команда замены 1 на 2 во входящем потоке
else
echo $line | sed "s/\/$filename/:$filename/";
fi
# сохраняем путь на будущее
temp=$dirname;
# ну и выведем содержимое. все ключи сохраняем.
# построчный вывод необходим для табуляции
cat $line | while read fileline
do
echo -e "\t$fileline";
done
echo -e "\tEnd of file";
done;
Пример вывода:
$./four.sh tmp tmp
tmp
cat: tmp: Is a directory
End of file
tmp:earer.tmp
TITLE: Getting the best out of MPlayer
LFS VERSION: any
AUTHOR: Alex Kloss <alex@22-music.com>
SYNOPSIS:
How to get the best of the great linux media player MPlayer.
HINT:
End of file
erwrewr.tmp
TITLE: Getting the best out of MPlayer
LFS VERSION: any
AUTHOR: Alex Kloss <alex@22-music.com>
End of file
ewrer
cat: tmp/ewrer: Is a directory
End of file
tmp/ewrer:ewrewr
cat: tmp/ewrer/ewrewr: Is a directory
End of file
Заранее спасибо.