Основы Linux: поиск файлов найти

задняя часть PHP Linux регулярное выражение
Основы Linux: поиск файлов найти

написать впереди

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

Синтаксис find относительно прост, и есть всего несколько часто используемых параметров, таких как-name,-type,-ctimeЖдать. Новички могут непосредственно посмотреть примеры во второй части.Если вы хотите узнать больше об описании параметра, вы можете обратиться к справочному документу find.

Синтаксис поиска следующий:

найти (опции) (параметры)

Общие примеры

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

Список всех файлов в текущем каталоге и подкаталогах

find .

Найти имя в текущем каталоге11.pngдокумент

find . -name "11.png"

Найти все файлы в текущем каталогеjpgдокумент

find . -name "*.jpg"

найти текущий каталогjpgдокументы иpngдокумент

find . -name "*.jpg" -o -name "*.png"

Узнать, не является ли текущий каталогpngконец файла

find . ! -name "*.png"

Найти по регулярному выражению

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

Найдите текущий каталог, имена файлов - все числаpngдокумент.

find . -regex "\./*[0-9]+\.png" 

Найти по пути

Найти текущий каталог, путь содержитwysiwygПуть файла.

find . -path "*wysiwyg*"

Найти по типу файла

пройти через-typeФильтр по типу файла.

  • f Обычный файл
  • l Символическая ссылка
  • д каталог
  • c символьное устройство
  • б блочное устройство
  • розетка
  • p Fifo

Например, чтобы найти текущий каталог, путь содержитwysiwygдокумент

find . -type f -path "*wysiwyg*"

Ограничить глубину поиска

Найти все файлы в текущем каталогеpng, за исключением подкаталогов.

find . -maxdepth 1 -name "*.png"

Соответственно, такжеmindepthопции.

find . -mindepth 2 -maxdepth 2 -name "*.png"

По размеру файла

пройти через-sizeдля фильтрации размера файла. Поддерживаемые единицы размера файла следующие:

  • б - блок (512 байт)
  • в - байты
  • w - слово (2 байта)
  • к — килобайты
  • М - мегабайты
  • Г - гигабайт

Например, найти в текущем каталоге файлы, размер которых превышает 100 МБ.

find . -type f -size +100M 

По времени доступа/модификации/изменения

Поддерживаются следующие типы времени.

  • Время доступа (-atime/день, -amin/минута): время последнего доступа пользователя.
  • Время модификации (-mtime/день, -mmin/минута): время последней модификации файла.
  • Время изменения (-ctime/день, -cmin/минута): время последнего изменения элементов данных файла (например, разрешений и т. д.).

Например, найти файлы, которые были изменены в течение 1 дня.

find . -type f -mtime -1

Найти файлы, к которым обращались за последнюю неделю

find . -type f -atime -7

Переместите файлы журналов старше недели в каталог журналов в/tmp/old_logsвнутри.

find . -type f -mtime +7 -name "*.log" -exec mv {} /tmp/old_logs \;

Примечание. {} используется в сочетании с параметром -exec для соответствия всем файлам, а затем заменяется соответствующим именем файла.

Кроме того,\;Используется для обозначения конца команды, если не добавить, появится следующее приглашение

find: -exec: no terminating ";" or "+"

В соответствии с разрешениями

пройти через-permреализовать. Например, узнать разрешения текущего каталога777документ

find . -type f -perm 777

Узнать php файлы, права которых не 644 в текущем каталоге

find . -type f -name "*.php" ! -perm 644

По словам владельца файла

Узнать владельца файлаrootдокумент

find . -type f -user root

Узнать, в какой группе находится файлrootдокумент

find . -type f -group root

Выполнить команду после того, как файл найден

пройти через-ok-execреализовать. Разница в том, что-okПеред выполнением команды будет выполнено второе подтверждение,-execНе буду.

Взгляните на практический пример. удалить все файлы в текущем каталогеjsдокумент. использовать-okЭффект следующий, перед удалением идет второе подтверждение

➜  find find . -type f -name "*.js" -ok rm {} \;
"rm ./1.js"? 

пытаться-exec. немедленно удалить

find . -type f -name "*.js" -exec rm {} \;

найти пустые файлы

Примеры следующие

touch {1..9}.txt
echo "hello" > 1.txt
find . -empty