Рекурсивный поиск из текущей папки больших файлов. С конвеерным форматированием вывода через awk. Точка - это место старта поиска - текущая папка, +600M размер искомых файлов в Мб, начиная с которого они будут находиться. Можно указывать в k — килобайтах. В awk я указал $10. На самом деле такой колонки нет, но если файлы содержат в имени пробел, часть за пробелом не будет утеряна. Правда если пробелов много, то от использования awk в конвеере вероятно лучше отказаться.
- b – для 512-байтовых блоков (по умолчанию, если префикс не указан)
- c – байты
- w – двухбайтовые слова
- k – килобайты (1024 байт)
- M – мегабайты (1048576 байт)
- G – гигабайты (1073741824 байт)
Пути поиска:
- / (слеш) корень root
- ~ (тильда) домашний каталог
- . (точка) текущий каталог
Чтобы найти только директории
find . -type d
Чтобы найти только файлы, а не директории
find . -type f
Найти файл по имени в хомяке:
find ~ -name ".bashrc"
Поддерживаются маски. Например найти все файлы, начинающиеся с точки:
find ~ -name ".*"
Для поиска можно указывать сразу несколько мест:
find /opt ~ -name ".*"
Поиск без учета регистра с помощью -iname
find ~ -iname ".bashrc"
Найти все файлы отличные от определенного типа файлов.
find ~ -not -name "*.txt"
Поиск сразу нескольких типов файлов, и .txt и .html, используя Regular Expressions
find . -regex ".*\.\(txt\|html\)$"
Поиск файлов используя условие ИЛИ (OR)
find . -name "*.txt" -o -name ".*"
Найти файлы с определенным доступом используя -perm
find . -type f -perm 0777
Найти все исполняемые файлы
find . -perm /a=x
Найти файлы с доступом только для чтения
find /root -perm /u=r
Найти все файлы пользователя по его имени
find . -user username
Найти файлы, изменённые 7 дней назад
Найти файлы, в которые входили 8 дней назад
Поиск всех пустых файлов
Поиск трёх самых БОЛЬШИХ файлов:
find . -type f -exec ls -s {} \; | sort -n -r | head -3
Поиск трёх самых маленьких файлов:
find . -type f -exec ls -s {} \; | sort -n | head -3
Вывести в текущей папке файлы между двумя датами:
find . -mindepth 1 -newermt '2011-03-29 00:00' ! -newermt '2011-03-30 23:59' -print
НАЙТИ И ЗАМЕНИТЬ
Просто рекурсивно найти файл по фрагменту содержимого, исключая не текстовые типы:
find . -type f -not -regex ".*\.\(JPG\|jpg\|jpeg\|gif\|pdf\|mov\)$" \
-exec egrep -iH 'искать_это|или_то' {} \;
Найти все файлыс правами 644 и заменить их на 777
find . -type f -perm 644 -print -exec chmod 777 {} \;
Найти и УДАЛИТЬ файлы, подходящие по определенным критериям:
find . -type f -name '*.back' -exec rm -f {} \;
Замена слов в скриптах:
find -name '*.php' -exec sed -i -e s/было/стало/g {} \;