Почему ls -R не выводит список файлов шаблона рекурсивно?

yum -config -менеджер --сохранить --setopt=spacewalk -client.skip _если _недоступен=true

просто запустите приведенную выше команду и увидите БООООООООО

0
27.03.2021, 06:53
1 ответ

Поскольку *.pdfрасширяется оболочкой для всех файлов.pdf в текущем рабочем каталоге и не имеет отношения к команде ls, которую вы ожидаете выполнить *.pdfдля просмотра всех файлов.pdf в любом подкаталоге. ; чтобы получить эту работу, вам нужно включить оболочку (в опцииbash)globstarи использовать **для просмотра/развертывания *.pdfв любых подкаталогах -, а также в текущем рабочем каталоге, как показано ниже :

. ]
shopt -s globstar; ls -d -- **/*.pdf

Более того, при использовании ls -R \*.pdfвы ищете один файл, соответствующий литералам *.pdf, а -Rздесь не имеет никакого эффекта поиска подкаталогов -(, если этот *.pdfфайл на самом деле не является каталог ), и он просто используется для рекурсивного перечисления подкаталогов. при этом вы можете использовать комбинацию lsс grepдля фильтрации файлов.pdf.

ls -bR |grep '\.pdf$'

но это не гарантирует, что он будет сообщать только о файлах, но также будет сообщать о каталогах с тем же конечным шаблоном.

и, как вы сказали и знали, лучший вариант — использовать команду find.

find. -type f -name '*.pdf'
2
28.04.2021, 22:55

Теги

Похожие вопросы