Я пытаюсь найти все файлы PDF в какой-либо папке и любой подпапке только в терминале, а не в сценарии. Я также новичок в Linux, поэтому прошу прощения, если я пропустил что-то очевидное или, возможно, жизненно важное для диагностики моей конкретной проблемы.
Я использую bash 4.1.5(1)-release (i486-pc-linux-gnu) и немного покопался в Google о выражениях glob и extglob, и похоже, что синтаксис, который я должен использовать,
$ ls **.pdf
Однако это ничего не находит, поскольку в текущей папке ./
нет файла, соответствующего шаблону *.pdf
; кажется, он хочет читать **
как *
:
ls: cannot access **.pdf: No such file or directory
В другом месте есть PDF-файлы, в подпапках от 1 до 5 (в частности, в каждой подпапке глубиной 1), некоторые из которых я могу увидеть, проверив с помощью
$ ls */*.pdf
Следовательно, ls
работает правильно. Его руководство кажется не очень полезным, так как все, что я мог видеть, может быть полезным для вызова ls
с флагом -R
, что не решает проблему ни в одном из вышеперечисленных случаев.
Я попытался использовать шаблоны extglob (не забудьте включить их с помощью shopt
). Я вижу свои файлы с глубиной 1 с ls */*?(.)pdf
, но ничего не вижу с ls .*(/*)pdf
или ls .*(/*).pdf
, даже из подкаталога, где есть PDF-файлы.
Я где-то читал (со ссылкой на файл .gitignore
в репозитории git), что шаблон **
работает не для всех.
Может ли это повлиять на меня, и как я могу это исправить (в идеале без привилегий суперпользователя)? Может ли это (или какая-то связанная с этим проблема) также повлиять на функциональность extglob?