найдите, что команда в Linux определяет местоположение файлов PDF

Моя цель состоит в том, чтобы найти все файлы PDF на удаленной машине, таким образом, я обращаюсь к полезной команде find. Таким образом, я ввожу

find ~ *.pdf
или
find ~ "*.pdf"
и я ничего не получаю. Я делаю то же на своей машине, и я ничего не получаю. Я делаю регулярный поиск из меню на моей машине, и я нахожу довольно много файлов PDF. Кто-то сказал бы мне, что я делаю неправильно?
11
задан 26.05.2010, 10:38

5 ответов

Смотрите на документацию для findutils. find команда является невероятно мощной и, следовательно, имеет несколько сложный интерфейс. Можно сделать то, с чем Вы хотите:

find . -type f -iname '*.pdf' 

Команда выше средств "находит в. для записей файла типа с нечувствительным к регистру именем, соответствующим *.pdf (и печать название таких соответствий)". Команда находки может на самом деле использоваться для выполнения команд на файлах, которые найдены (вместо или в дополнение к печати имен файлов). В Ваших целях, тем не менее, можно найти себя более довольными определять местоположение командой, которую - принятие Вы создали, определять местоположение база данных с помощью updatedb - делает очень легким найти файлы. Например:

locate '*.pdf'

Вы также найдете, что определять местоположение команда обычно быстрее, чем команда находки, как располагаются, использует индекс имен файлов (определять местоположение база данных), тогда как находка обойдет иерархию для каждого вызова.

9
ответ дан 07.12.2019, 12:10

find совсем не бесполезно. Вы просто не используете его правильно.

попытка:

find . -type f -iname '*.pdf'

30
ответ дан 07.12.2019, 12:10

Вы просто пропускаете предикат, который говорит, чем Вы ищете (например. -name.)

Найти в корневом каталоге по имени:

find ~ -name \*.pdf

Обратите внимание что подстановочный знак * должен быть оставлен так, чтобы оболочка не интерпретировала его, прежде чем найдут, достает его. Используя '*.pdf' и "*.pdf" будет иметь тот же эффект как \*.pdf.

Найти нечувствительно к регистру:

find ~ -iname \*.pdf

Для сокращения результатов в файлы только (выражение имени будет, вероятно, заботиться об этом для Вас, но на всякий случай у Вас есть любые странно названные каталоги):

find ~ -type f -iname \*.pdf

Для проверки находят, переходит по символьным ссылкам (я обычно хочу сделать это сам при выполнении поисков):

find ~ -follow -type f -iname \*.pdf

Чтобы сделать что-то с файлами, Вы нашли: можно вывести это в файл с помощью stdout перенаправление (например, лавировать на > filename в конце), или использование -exec опция выполнить команду (см. страницу справочника для деталей). Последние выполнения команда на каждом файле за один раз, все же. это часто быстрее для разрешения xargs управляйте передают Ваши найденные файлы как аргументы другой команде, внезапно или большим блокам за один раз. Например, для специального (но неиндексируемый) держит через заголовочные файлы:

find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"

И одно заключительное расширение, чтобы заставить ту последнюю команду работать правильно, если у Вас есть файлы и каталоги с пробелами в них:

find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
6
ответ дан 07.12.2019, 12:10

смотрите на это учебное руководство

я думаю, что Вы хотите сделать,

find . -name "*.pdf"
3
ответ дан 07.12.2019, 12:10

Я раньше комбинировал находку с grep как

найти.. | grep-i ".pdf"

возможно, не эффективная вершина, но она делает прекрасное задание.

0
ответ дан 07.12.2019, 12:10

Теги

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