Моя цель состоит в том, чтобы найти все файлы PDF на удаленной машине, таким образом, я обращаюсь к полезной команде find
. Таким образом, я ввожу
find ~ *.pdfили
find ~ "*.pdf"и я ничего не получаю. Я делаю то же на своей машине, и я ничего не получаю. Я делаю регулярный поиск из меню на моей машине, и я нахожу довольно много файлов PDF. Кто-то сказал бы мне, что я делаю неправильно?
Смотрите на документацию для findutils. find
команда является невероятно мощной и, следовательно, имеет несколько сложный интерфейс. Можно сделать то, с чем Вы хотите:
find . -type f -iname '*.pdf'
Команда выше средств "находит в. для записей файла типа с нечувствительным к регистру именем, соответствующим *.pdf (и печать название таких соответствий)". Команда находки может на самом деле использоваться для выполнения команд на файлах, которые найдены (вместо или в дополнение к печати имен файлов). В Ваших целях, тем не менее, можно найти себя более довольными определять местоположение командой, которую - принятие Вы создали, определять местоположение база данных с помощью updatedb - делает очень легким найти файлы. Например:
locate '*.pdf'
Вы также найдете, что определять местоположение команда обычно быстрее, чем команда находки, как располагаются, использует индекс имен файлов (определять местоположение база данных), тогда как находка обойдет иерархию для каждого вызова.
find
совсем не бесполезно. Вы просто не используете его правильно.
попытка:
find . -type f -iname '*.pdf'
Вы просто пропускаете предикат, который говорит, чем Вы ищете (например. -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"
Я раньше комбинировал находку с grep как
найти.. | grep-i ".pdf"
возможно, не эффективная вершина, но она делает прекрасное задание.