написать впереди
В повседневном управлении 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