Ls - рекурсивное составл. перечня файов. Почему не получается?

Автор: bsm Дата: 15.06.2009 13:00 Согл. документации пытаюсь составить (рекурсивно) каталог файлов-

[bsm@maestro ~]$ ls -1 --recursive /home/bsm/working/*.sh
/home/bsm/working/control-files.sh
..
/home/bsm/working/working_dirs.sh

Но получаю лишь перечень файлов запрошенного каталога, хотя в /home/bsm/working имеются ещё несколько каталогов с .sh файлами.

[bsm@maestro ~]$ ls -1 --recursive /home/bsm/working/bash/*.sh
/home/bsm/working/bash/calc-size.sh
..
/home/bsm/working/bash/traffic-control.sh

Почему?

Хотя, если сделать так,- ls -1 --recursive /home/bsm/working/*/*/*/*/*/*/*.sh
получаю информацию о наличии .sh файлов в вложенных каталогах.

Можно сделать вывод о не выполнении ключа --recursive?
Re: ls - рекурсивное составл. перечня файов. Почему не получается? 15.06.2009 15:10kosmonavt > Можно сделать вывод о не выполнении ключа --recursive?

Можно сделать вывод о том, что разворачивание метасимволов происходит в шелл, а не в ls. Рекурсивного обхода не будет, потому что в параметры ls не попадают каталоги: ls нечего рекурсивно обходить.

PS

ls не поддерживает глобинг. man find
Re: ls - рекурсивное составл. перечня файов. Почему не получается? 15.06.2009 15:48smaharbA автор совершенно прав
ls поддерживает рекурсию, но в отношении всех файлов
ls не поддерживает маску ввода, это дело шела

ls -1R | grep \.sh$
Re: ls - рекурсивное составл. перечня файов. Почему не получается? 15.06.2009 18:00bsm smaharbA Пишет:
-------------------------------------------------------
> автор совершенно прав
> ls поддерживает рекурсию, но в отношении всех
> файлов
> ls не поддерживает маску ввода, это дело шела
>
> ls -1R | grep \.sh$
В таком случае получаем перечень файлов без указания их местонахождения.
Re: ls - рекурсивное составл. перечня файов. Почему не получается? 15.06.2009 20:02lkanter Говорили же - man find

find . -name "*.sh" -print
Re: ls - рекурсивное составл. перечня файов. Почему не получается? 17.06.2009 14:09bsm lkanter Пишет:
-------------------------------------------------------
> Говорили же - man find
>
> find . -name "*.sh" -print

Вы правы-

find /home/traffic | grep \.pl$ - даёт избыточный перечень файлов
find /home/traffic -name '*.pl' - даёт ожидаемый перечень файлов

Спасибо. Тема закрыта.
RSS-материал