
09.05.2010, 19:57
|
|
Новичок
Регистрация: 06.04.2010
Сообщений: 26
Провел на форуме: 179669
Репутация:
8
|
|
если "ключ" совпадает с ключем команды test - то я бы сделал так:
Код:
for file in "$1"/*
do
test -$2 "$file" && echo `basename "$file"`
done
никаких `ls ...`, for разворачивает звездочку в список файлов. из минусов будет то, в каталоге с большим кол-вом файлов можно получить переполнение длины параметров, но зато легче. в кавычки пришлось взять чтобы корректно обрабатывать пробелы в дургие символы в имени директории.
test делает свое дело, и если код возврата был нулевой, тогда выводится строка с echo, если надо имя файла с относительным путем - тогда можно без basename, но тогда всякие ../path/to/back/../../../ будут в имени файла, забыл команду которая преобразует в нормальный путь и имя файла.
Код:
## каталоги
[me@localhost] Videos $ ./lab.sh Planeta\ 51/ d
AUDIO_TS
VIDEO_TS
## файлы
[me@localhost] Videos $ ./lab.sh Planeta\ 51/VIDEO_TS f
VIDEO_TS.BUP
VIDEO_TS.IFO
VIDEO_TS.VOB
VTS_01_0.BUP
VTS_01_0.IFO
VTS_01_0.VOB
VTS_01_1.VOB
VTS_01_2.VOB
VTS_01_3.VOB
VTS_01_4.VOB
VTS_01_5.VOB
## сделаю маленькое западло, уберу право чтения с VOB-файлов.
[me@localhost] Videos $ chmod -r Planeta\ 51/VIDEO_TS/*.VOB
[me@localhost] Videos $ ./lab.sh Planeta\ 51/VIDEO_TS/ r
VIDEO_TS.BUP
VIDEO_TS.IFO
VTS_01_0.BUP
VTS_01_0.IFO
|
|
|