Пять команд поиска файлов в Linux

Вступление

Есть пять команд поиска файлов на Linux: whereis, locate, which, type, и find. Каждый из них имеет свои особенности и предназначен для определенных поисковых сценариев. Это руководство познакомит вас с каждой командой и покажет примеры использования. Для дальнейшего чтения любой из этих команд лучше всего просмотреть соответствующую страницу руководства.

whereis

Команда whereisиспользуется для поиска двоичных файлов, исходного кода и онлайн-страниц справочника в нескольких стандартных каталогах установки для любого указанного имени программы.

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

Кроме того, он не будет искать те команды, которые встроены непосредственно в оболочку.

Например, если вы хотите найти информацию о lsкоманде, выполните следующую команду на своем терминале:

whereis ls

Вы получите некоторые отзывы, такие как:

ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

В результате, /bin/lsэто бинарный файл, который вы хотите найти, два других - man-страницы для lsпрограммы, исходный код для lsпрограммы не найден.

Скопируйте /bin/lsфайл в свой домашний каталог и в /usr/binкаталог, а затем whereisснова введите команду:

cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls

Как видите, только /bin/lsи /usr/bin/lsбыли найдены в результате поиска. lsПрограмма в домашнем каталоге не найден, потому что ваш домашний каталог не один из тех , стандартной установки каталогов.

ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

Если вы запустите следующую команду:

whereis cd

Вы увидите вывод, похожий на строку ниже. Не было обнаружено двоичного файла, потому что cdэто встроенная команда оболочки.

cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

locate

Команда locateиспользуется для поиска файлов по имени с помощью базы данных ( /var/lib/mlocate/mlocate.db). Эта база данных является в основном снимком структуры вашей файловой системы. Любые записи в этой базе данных, которые соответствуют вашему запросу, будут перечислены в результатах поиска. По умолчанию locateкоманда будет использовать ваш запрос для сопоставления любой части полного имени каждой записи, включая имя пути. Следовательно, количество найденных файлов в результате поиска может оказаться больше, чем вы ожидаете.

Поскольку база данных устаревает, результат поиска locateкоманды становится менее точным. Вы можете заметить файлы, которые больше не существуют, или вы не увидите совпадений для вновь созданных файлов. По умолчанию mlocate.dbбаза данных автоматически обновляется один раз в день. Вы можете использовать updatedbкоманду, чтобы обновить ее вручную.

Поскольку поиск выполняется по базе данных, а не по файловой системе, скорость поиска очень высокая.

Если вы запустите следующую команду:

locate ls

Вы получите много записей вместо ожидаемого результата.

Чтобы сделать результаты поиска более точными, вы можете использовать -bфлаг, чтобы ограничить диапазон поиска, используя свой запрос, чтобы соответствовать только базовому имени каждой записи:

locate -b "\ls"

На этот раз вы получите местоположение каждого файла, точно вызванного lsв вашей файловой системе:

/bin/ls

which

Команда whichбудет искать команду, указанную вами в значении переменной среды, PATHи по умолчанию выдаст первый результат. Если вы запрашиваете псевдоним, whichкоманда определит фактическую команду для псевдонима перед выполнением поиска.

Команда whichтакже очень быстрая из-за своей простоты.

Использование whichкоманды просто:

which your_command

Если вы хотите показать все совпавшие команды вместо первой, используйте -aфлаг:

which -a your_command

Вот пример для поиска команды, которая была псевдонимом:

which ll

Результат поиска будет:

alias ll='ls -l --color=auto'
    /bin/ls

type

По умолчанию typeкоманда указывает, как будет интерпретироваться имя команды. Возможные результаты включают псевдоним, ключевое слово, функцию, встроенную функцию или файл. Как и whereisкоманда, typeкоманда будет искать только в нескольких стандартных каталогах установки, чтобы ответить на ваш запрос.

Несколько примеров ввода разных команд:

Встроенная команда оболочки:

type cd

cd is a shell builtin

Бинарный файл в файловой системе:

type sudo

sudo is /usr/bin/sudo

Псевдоним:

type ls

ls is aliased to `ls --color=auto'

find

Среди пяти команд поиска файлов, представленных в этом руководстве, эта findкоманда является самой мощной. Это также самый медленный. В отличие от других четырех команд, findкоманда фактически будет искать ваш файл во всей файловой системе, один i-узел за одним i-узлом. С помощью findкоманды вы можете использовать сложные критерии запроса, чтобы найти каждый файл, который вам нужен, даже дополнительно выполнить действия с найденными файлами.

Критерии поиска для findкоманды слишком сложны, чтобы их можно было объяснить в такой короткой статье, а здесь несколько примеров.

Базовый формат findкоманды:

find [path] [option] [action]

Чтобы найти все файлы в рабочем каталоге и всех его подкаталогах:

find

Чтобы найти файл с именем aaaв вашем домашнем каталоге и во всех его подкаталогах:

find ~ -name 'aaa'

Чтобы найти все файлы в файловой системе, которые были изменены за последние 24 часа:

find / -mtime 0

Чтобы найти все файлы в веб-каталоге и все его подкаталоги, принадлежащие пользователю nginx:

find /usr/share/nginx/html/ -user nginx

Чтобы найти все файлы в рабочем каталоге с правами доступа 0744:

find -perm -0744

Чтобы найти файл с именем aaaв рабочем каталоге и вывести его подробную информацию:

find -name 'aaa' -exec ls -l {} \;


Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше