Рекурсивна лс з умовами


16

Чому я не можу використовувати таку команду, щоб знайти всі файли pdf у каталозі та підкаталогах? Як це зробити? (Я використовую bash в ubuntu)

ls -R *.pdf

EDIT

Як я б тоді пішов про видалення всіх цих файлів?

Відповіді:


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 . -iname \*.pdf -delete

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

2

Як говорили інші, відповідь знайдіть.

Тепер, щоб відповісти на іншу частину.

  • Як я б тоді пішов про видалення всіх цих файлів?

    знайти. -iname * .pdf -exec rm {} \;

Повинен це робити.


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.