14

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

ls -R *.pdf

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

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

3 ответа3

20

Почему я не могу использовать такую команду, чтобы найти все 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
2

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

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

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

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

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

1

Используйте find вместо ls

find . -name '*.pdf'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .