Перейти к содержимому

Как найти папку в linux через терминал

  • автор:

Как найти папку в ubuntu?

Получил легаси проект, в котором не особо следили за соглашениями об именовании и расположении папок.
Могу только предполагать как должны называться папки и файлы. Отсюда вопросы:
1) Как найти папку по имени?
Например, find workers -type d не особо помогает. Ищет только в текущем каталоге, а нужно по всей системе. 2) Как найти файл по части имени?
Т.е. часть имени должна быть _workers.rb , по ней нужно осуществить поиск Поиск по всей системе.

Отслеживать

задан 3 мая 2018 в 9:39

902 1 1 золотой знак 13 13 серебряных знаков 27 27 бронзовых знаков

find / -type d -iname ‘*часть имени*’ (звёздочки и кавычки не стирать)

3 мая 2018 в 9:44

ну как так? ru.wikipedia.org/wiki/Find

3 мая 2018 в 16:33

@diproart а теперь есть легальная отмазка: РКН меня забанил в вики!

3 мая 2018 в 19:41

@andreymal, неплохо бы добавить -xdev .

12 мая 2018 в 16:11

Если есть база данных, по состоянию на последнее её обновление можно запустить команду locate . Это во много раз быстрее, чем find .

Как найти файлы и папки в Linux из терминала (командная строка)

Как найти файлы и папки в Linux из терминала (командная строка)

Команда find — один из самых мощных инструментов для системных администраторов Linux. Поиск файлов и каталогов в иерархии каталогов на основе заданного пользователем выражения и выполнение указанных пользователем действий над каждым соответствующим файлом.

Вы можете использовать команду find или для поиска файлов и каталогов на основе разрешений, типа, даты, владельца, размера и т. д. Его также можно использовать в сочетании с другими инструментами, такими как grep или sed .

Найти синтаксис команды

Общий синтаксис команды find следующий:

find [options] [path. ] [expression] 
  • Атрибут options управляет обработкой символических ссылок, опциями отладки и методом оптимизации.
  • Атрибут path. определяет начальный каталог или каталоги, в которых find будет искать файлы.
  • Атрибут expression состоит из параметров, шаблонов поиска и действий, разделенных операторами.

Для поиска файлов в каталоге пользователь, вызывающий команду find , должен иметь права на чтение для этого каталога.

Давайте посмотрим на следующий пример:

find -L /var/www -name "*.js" 
  • Параметр -L (параметры) указывает команде find следовать символическим ссылкам.
  • Путь /var/www (путь. ) указывает каталог, который будет искаться.
  • Выражение -name «*.js (выражение) указывает команде find искать файлы, оканчивающиеся на .js (файл JavaScript).

Найти файлы по имени

Поиск файлов по имени, вероятно, является наиболее распространенным применением команды find . Чтобы найти файл по его имени, параметр -name ищет имя файла.

Например, для поиска файла с именем document.pdf в каталоге /home/noviello нужно использовать следующую команду:

find /home/noviello -type f -name document.pdf 

Чтобы выполнить поиск без учета регистра, измените параметр -name на -iname :

find /home/noviello -type f -iname document.pdf 

Приведенная выше команда будет соответствовать «Document.pdf», «DOCUMENT.pdf» и т. д.

Поиск файлов по расширению

Поиск файлов по расширению аналогичен поиску файлов по имени. Например, чтобы найти все файлы, заканчивающиеся на .log.gz внутри каталога /var/log/nginx , вы можете использовать:

find /var/log/nginx -type f -name '*.log.gz' 

Важно помнить, что при использовании подстановочного знака вы должны заключать шаблон в кавычки или экранировать * символ звездочки с помощью обратной косой черты \ , чтобы он не интерпретировался оболочкой.

Чтобы найти все файлы, не соответствующие регулярному выражению *.log.gz , вы можете использовать параметр -not . Например, чтобы найти все файлы, которые не заканчиваются на *.log.gz , вы должны использовать:

find /var/log/nginx -type f -not -name '*.log.gz' 

Поиск файлов по типу

Иногда вам может понадобиться искать определенные типы файлов, такие как обычные файлы, каталоги или символические ссылки. В Linux все является файлом.

Для поиска файлов по их типу используйте параметр -type и один из следующих дескрипторов для указания типа файла:

  • f : обычный файл
  • d : каталог
  • l : символическая ссылка
  • c : символьные устройства
  • b : блочные устройства
  • p : именованный канал (FIFO)
  • s : взято

Например, чтобы найти все каталоги в текущем рабочем каталоге, используйте:

find. -type d 

Типичным примером может быть рекурсивное изменение прав доступа к файлу веб-сайта 644 и разрешений каталога 755 с помощью команды chmod :

find /var/www/my_website -type d -exec chmod 0755 <> \; 
find /var/www/my_website -type f -exec chmod 0644 <> \;

Поиск файлов по размеру

Чтобы найти файлы по размеру, передайте параметр -size вместе с критериями размера. Для указания размера файла можно использовать следующие суффиксы:

  • b : блоки по 512 байт (по умолчанию)
  • c : байт
  • w : двухбайтовые слова
  • k : килобайт
  • M : Мегабайты
  • G : Гигабайт

Следующая команда найдет все файлы размером ровно 1024 байта в каталоге /tmp :

find /tmp -type f -size 1024c 

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

В следующем примере мы ищем все файлы размером менее 1 1MB в текущем рабочем каталоге. Обратите внимание на знак минус перед значением размера —

find. -type f -size -1M 

Если вы хотите найти файлы размером более 1MB , вам нужно использовать символ плюс + :

find. -type f -size +1M 

Вы также можете искать файлы в диапазоне размеров. Следующая команда найдет все файлы размером от 1 до 2MB :

find. -type f -size +1M -size 21M 

Поиск файлов по дате модификации

Команда find также может искать файлы по времени последней модификации, времени доступа или модификации.

Как и при поиске по измерению, используйте символы «плюс» и «минус» для «больше» или «меньше».

Вы можете легко отфильтровать все файлы в каталоге /etc/dovecot/conf.d , которые заканчиваются на .conf и были изменены за последние пять дней, с помощью:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5 

Вот еще один пример фильтрации файлов по дате изменения с помощью параметра -daystart . Следующая команда выведет список всех файлов в каталоге /home , которые были изменены 30 или более дней назад:

find /home -mtime +30 -daystart 

Найти файлы по разрешениям

Опция -perm позволяет искать файлы на основе прав доступа к файлам.

Например, чтобы найти все файлы с правами доступа 775 в каталоге /var/www/html , вам нужно будет использовать:

find /var/www/html -perm 644 

Вы можете добавить префикс к числовому режиму с минусом / —

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

Рассмотрим следующий пример команды:

find. -perm /444 

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

Если вы используете меньше — в качестве префикса, вы должны установить файл так, чтобы он соответствовал хотя бы указанным битам. Следующая команда будет искать файлы, которые имеют права на чтение и запись для владельца и группы и доступны для чтения другим пользователям:

find. -perm -664 

Поиск файлов по владельцу

Чтобы найти файлы, принадлежащие определенному пользователю или группе, используйте параметры -user и -group .

Например, чтобы найти все файлы и каталоги, принадлежащие пользователю noviello , выполните:

find /-user noviello 

Допустим, вы хотите найти все файлы, принадлежащие пользователю www-data и изменить владельца соответствующих файлов с www-data на nginx :

find /-user www-data -type f -exec chown nginx <> \; 

Найти и удалить файлы

Чтобы удалить все совпадающие файлы, добавьте параметр -delete в конец выражения соответствия.

Убедитесь, что вы используете эту опцию только тогда, когда уверены, что результат соответствует файлам, которые вы хотите удалить. Всегда полезно распечатать соответствующие файлы перед использованием опции -delete .

Например, чтобы удалить все файлы, оканчивающиеся на .temp из каталога /var/log/ , вы должны использовать:

find /var/log/-name '*.temp' -delete 

Когда дело доходит до каталогов, find может удалять только пустые каталоги, такие как rmdir .

Вывод

Мы показали вам, как использовать команду find с различными параметрами и критериями.

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

Supportaci se ti piacciono i nostri contenuti. Grazie.

Noviello.it Newsletter

Ricevi gli ultimi approfondimenti direttamente nella tua casella di posta!

Работа с файлами и каталогами в Linux

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

Эта инструкция — часть курса «Linux: горячие клавиши и команды».

Смотреть весь курс

Введение

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

Требования

Cервер с Ubuntu 20.04

Все команды, описанные ниже, будут работать и в других дистрибутивах Linux.

Расположение каталогов в файловой системе

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

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

Результат выполнения команды выглядит следующим образом:

/home/demo

Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /demo. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.

Просмотр содержимого каталогов

Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.

Просмотреть содержимое любой директории можно следующими способами:

ls имя_директории

Либо введя команду:

ls /путь _к _директории

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

dir1 file1 file2 file3

К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:

ls -l

Результат выполнения команды:

total 16 drwxr-xr-x 2 home demo 4096 Nov 3 17:40 dir1 -rw-r--r-- 1 home demo 13 Nov 8 17:17 file1 -rw-r--r-- 1 home demo 42 Nov 9 13:04 file2 -rw-r--r-- 1 home demo 42 Nov 10 13:04 file3

Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:

ls -a

Результат выполнения команды:

. dir1 file1 .mysql_history .ssh .. .bash_history file2 file3 .nan

Отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип, можно с помощью команды:

ls -F

Результат выполнения команды:

dir1/ file1 file2 file3

Перемещение между каталогами

Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.

Для перехода в домашний каталог пользователя user используется команда:

cd ~user

Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.

В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.

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

Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.

Для перехода в директорию уровнем выше используется команда:

Для перехода в директорию двумя уровнями выше:

Масштабируемое файловое хранилище

Подключите ее к нескольким физическим или облачным серверам и кластеру Kubernetes.

Операции с файлами и каталогами

У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр —help, например:

ls --help

Далее приведен список основных команд навигации в консоли Linux.

Создание

Создание файлов производится с помощью команды:

touch имя_файла

Создание каталогов выполняется с помощью команды вида:

mkdir имя_директории

Название этой команды является сокращением слов make directory.

Создание двух каталогов одновременно выполняется с помощью команды:

mkdir имя_директории_1 имя_директории_2

Для создания дерева каталогов используется команда следующего вида:

mkdir -p /имя_директории_1/имя_директории_2

Удаление

Для удаления директорий используется команда rmdir имя_директории. Название этой команды является сокращением слов remove directory.

Для удаления файлов используется команда rm. Например, для удаления файла с именем file1 используется команда:

rm file1

Команда rm также позволяет удалять не только файлы, но и каталоги.

Для удаления директории с именем dir1 со всеми подкаталогами и файлами используется опция -r (от слова recursive):

rm -r dir1 

Можно удалить одновременно две директории со всем их содержимым:

rm -r имя_директории_1 имя_директории_2

Также можно использовать параметр -f, который означает, что при удалении не будет запрашиваться подтверждение.

Команда для удаления файла будет выглядеть так:

rm -f file1

Команда для удаления каталога:

rm -rf dir1

Перемещение

Для перемещения и переименования файлов и каталогов используется команда mv. Название этой команды является сокращением слова move.

Переименовать файл можно с помощью команды:

mv имя_файла новое_имя

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

mv имя_файла путь/

Копирование

Для копирования используется команда cp. Название этой команды является сокращением слова copy.

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

cp file1 file2

Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:

cp -a dir1/ dir2/

Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:

cp file1 dir1/ 

Редактирование файлов

Мы ознакомились с основными командами для работы с каталогами и файлами.

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

Команда nano позволяет работать в одном из самых простых текстовых редакторов командной строки Linux, который занимает весь терминал в течение всего срока его использования.

В результате ввода в терминал команды nano будет открыт чистый файл.

Интерфейс выглядит следующим образом:

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

В середине должно располагаться содержимое файла, в настоящее время оно пустое.

В нижней части интерфейса расположен ряд комбинаций клавиш, которые указывают с основными элементами управления текстового редактора. Для каждого из них символ ^ означает клавишу CTRL.

Для того чтобы открыть справку используйте сочетание клавиш CTRL-G.

Закрывается справка с помощью сочетания клавиш CTRL-X. После закрытия справки мы возвращаемся к редактированию.

Вводить и редактировать можно любой текст, например, можно ввести: “Hello World!”

Для сохранения внесенных изменений следует нажать сочетание клавиш CTRL-O. Внимание! Это буква О, а не ноль.

Далее система попросит вас ввести либо подтвердить имя файла, который вы хотите сохранить:

File Name to Write: ^G Get Help M-D DOS Format M-A Append M-B Backup File ^C Cancel M-M Mac Format M-P Prepend

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

После ввода имени файла нажмите клавишу ENTER.

Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.

Если вы внесли изменения и не сохранили файл, вам будет предложено сохранить сделанные вами изменения:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? Y Yes N No ^C Cancel

Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.

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

Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.

Заключение

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

Структура и типы файловых систем в Linux

Команда find в Linux – мощный инструмент сисадмина

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

Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:

  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:

  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Синтаксис команды find:

$ find directory-to-search criteria action
  • directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
  • criteria (критерий) – критерий, по которым нужно искать файлы;
  • action (действие) – что делать с каждым найденным файлом, соответствующим критериям.

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

$ find . -name "s.txt" ./s.txt
  • . (точка) – файл относится к нынешнему каталогу
  • -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

$ find . -iname "s.txt" ./s.txt ./S.txt

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:

$ find . -name "*.png" ./babutafb.png ./babutafacebook.png ./Moodle2.png ./moodle.png ./moodle/moodle1.png ./genxfacebook.png

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

$ find /home -name "*.png" find: `/home/babuta/.ssh': Permission denied /home/vagrant/Moodle2.png /home/vagrant/moodle.png /home/tisha/hello.png find: `/home/tisha/testfiles': Permission denied find: `/home/tisha/data': Permission denied /home/tisha/water.png find: `/home/tisha/.cache': Permission denied

Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.

find /home -name "*.jpg" 2>/dev/null /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/tisha/hello.jpg /home/tisha/water.jpg

Поиск по типу файла

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

  • f – простые файлы;
  • d – каталоги;
  • l – символические ссылки;
  • b – блочные устройства (dev);
  • c – символьные устройства (dev);
  • p – именованные каналы;
  • s – сокеты;

Например, указав критерий -type d будут перечислены только каталоги:

$ find . -type d . ./.ssh ./.cache ./moodle

Поиск по размеру файла

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

  • «+» — Поиск файлов больше заданного размера
  • «-» — Поиск файлов меньше заданного размера
  • Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.

В данном случае поиск выведет все файлы более 1 Гб (+1G).

$ find . -size +1G ./Microsoft_Office_16.29.19090802_Installer.pkg ./android-studio-ide-183.5692245-mac.dmg
Единицы измерения файлов:

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги.

$ find . -empty ./.cloud-locale-test.skip ./datafiles ./b.txt . ./.cache/motd.legal-displayed

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

$ find . -cmin -60 . ./a.txt ./datafiles

Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.

$ find . -cmin +60

Поиск по времени доступа

Критерий -atime позволяет искать файлы по времени последнего доступа.

$ find . -atime +180

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).

Поиск по имени пользователя

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

$ find /home -user tisha 2>/dev/null

Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

$ find /home -perm 777

Поиск файлов с разрешениями 777.

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы:

Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:

$ find /home -user tisha -and -size +1G 2>/dev/null

Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.

$ find /home \( -user pokeristo -or -user tisha \) -and -size +1G 2>/dev/null

Перед скобками нужно поставить обратный слеш «\».

Действия

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

  • -delete — Удаляет соответствующие результатам поиска файлы
  • -ls — Вывод более подробных результатов поиска с:
    • Размерами файлов.
    • Количеством inode.
    -delete

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

    $ find . -empty -delete

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

    -exec:

    Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.

    -exec command <> \;
    • command – это команда, которую вы желаете выполнить для результатов поиска. Например:
      • rm
      • mv
      • cp

      С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

      $ find . -empty -exec rm <> \;

      Другой пример использования действия -exec:

      $ find . -name "*.jpg" -exec cp <> /backups/fotos \;

      Таким образом можно скопировать все .jpg изображения в каталог backups/fotos

      Заключение

      Команду find можно использовать для поиска:

      • Файлов по имени.
      • Дате последнего доступа.
      • Дате последнего изменения.
      • Имени пользователя (владельца файла).
      • Имени группы.
      • Размеру.
      • Разрешению.
      • Другим критериям.

      С полученными результатами можно сразу выполнять различные действия, такие как:

      • Удаление.
      • Копирование.
      • Перемещение в другой каталог.

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

      image

      • терминал linux
      • команда find
      • системное администрирование linux
      • системное администрирование

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *