Рекурсивный ls с условиями


16

Почему я не могу использовать такую ​​команду, чтобы найти все PDF-файлы в каталоге и подкаталогах? Как это сделать? (Я использую Bash в Ubuntu)

ls -R *.pdf

РЕДАКТИРОВАТЬ

Как мне тогда удалить все эти файлы?

Ответы:


22

Почему я не могу использовать такую ​​команду, чтобы найти все PDF-файлы в каталоге и подкаталогах?

Подстановочный знак *.pdfв вашей команде раскрывается bashдо всех соответствующих файлов в текущем каталоге перед выполнением ls.


Как это сделать? (Я использую Bash в Ubuntu)

найди твой ответ.

find . -name \*.pdf

это рекурсивный список файлов PDF. -inameсовпадение без учета регистра, так

find . -iname \*.pdf

перечисляет все файлы .pdf, включая, например, foo.PDF

Также вы можете использовать ls для ограниченного числа подпапок, например

ls *.pdf */*.pdf

найти все PDF-файлы в подпапках (соответствует bar / foo.pdf, а не bar / foo / asdf.pdf и не foo.PDF).

Если вы хотите удалить файлы, найденные с помощью find, вы можете использовать

find . -iname \*.pdf -delete

1
На всякий случай, если вам нужен вывод, похожий на ls -lкоманду, с указанием размера файла, владельца, даты и т. Д., Вы можете использовать findэту -lsопцию, например,find . -name \*.pdf -ls
RFVoltolini

2

Как уже говорили другие, найти ответ.

Теперь ответим на другую часть.

  • Как мне тогда удалить все эти файлы?

    находить . -имя * .pdf -exec rm {} \;

Должен сделать это.


2
Вы должны процитировать свой шар, чтобы предотвратить его преждевременное расширение.
Приостановлено до дальнейшего уведомления.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.