5W site logo 5W - мой домашний сайт-блог с картинками, кино и плюшками.

find.txt

find
Если в текущей директории есть скрытые каталоги, то вывод команд будет различаться. Первая будет искать везде, а вторая - проигнорирует скрытые папки на текущем уровне:
find .
find *
№1
Поиск по части имени

$ find ~/ -name dead*
№2
Замена слов в скриптах

$ find -name '*.php' -exec sed -i -e s/было/стало/g {} \;
№3
Найти и удалить все временные файлы vim'а

$ find ./ -name '*.sw[op]' -delete
№4
Сохранить все *.xml вместе с деревом каталогов в архиве.

$ find ./dir -name "*.xml" -print | zip archive -@
№5
Для того, чтобы рекурсивно поменять права на каталог и вложенные подкаталоги, необходимо выполнить 2 команды:

$ find . -type d -exec chmod 775 "{}" \;
$ find . -type f -exec chmod 664 "{}" \;
№6
Из поиска убрать все скрытые папки и файлы

find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
№7
Из поиска убрать все скрытые папки но показывать скрытые файлы в обычных каталогах

find . \( ! -regex '.*/\..*/..*' \) -type f -name "whatever"
№8
Найти файлы, которые не являются видимыми для всех

$ find -type f ! -perm -444
№9
Найти директории не доступные для всех

$ find -type d ! -perm -111
№10
Задать максимальную глубину поиска

$ find . -maxdepth 1
.
./_nix
./python
./vim
./c
./javascript
№11
Искать файлы определённого пользователя

$ find . -user www-data
./tmp/user-13-invite.png
./tmp/user-17-invite.png
./tmp/user-14-invite.png
./tmp/user-16-invite.png
./log/mail
./log/exception
./log/404
№12
Показать файлы которые менялись за последние 10 дней

$ find /usr/bin -type f -mtime -10
№13
Найти все файлы, чьё имя состоит лишь из символов

$ find * -type f -name '[0-9]*'
№14
Найти все скрытые файлы

$ find . -type f -iname ".*"
№15
Для каждого результата поиска задать вопрос: выполнять ли указанную команду

$ mkdir a b c
$ touch {a,b,c}/{1,2,3}
$ find * -type f -ok rm {} \;
< rm ... a/3 > ?
< rm ... a/2 > ? y
< rm ... a/1 > ?
< rm ... b/3 > ?
< rm ... b/2 > ? y
< rm ... b/1 > ?
< rm ... c/3 > ?
< rm ... c/2 > ? y
< rm ... c/1 > ?
$ find * -type f
a/3
a/1
b/3
b/1
c/3
c/1
№16
Удалить все пустые директории

$ find -depth -type d -empty -exec rmdir {} \;
№17
Вывести только файлы из текущего каталога

$ find * -maxdepth 0 -type f
№18
Ищем файлы изменялись в определённом диапазоне времени

$ touch -t yyyymmddHHMM range_start
$ touch -t yyyymmddHHMM range_end
$ find . -type f -newer range_start ! -newer range_end -ls
№19
Найти симлинки

$ find ~/ -type l

// можно сразу посмотреть куда они ведут:
$ find ~/ -type l -exec ls -l {} \;
№20
Найти файлы по определенной маске, содержащие определенный текст. Отображает имя файла, номер строки где найден текст, и саму строку. Все это красиво раскрашивает (если консоль позволяет раскраску)

//Найдем все файлы *.php, содержание строку print_r
$ find . -name "*.php" |\
while read i; do \
cat "$i" | grep -H --label="$i" -n "print_r"; \
done

//Тоже самое - в виде одной строки (для удобства копипасты)
$ find . -name "*.php" | while read i; do cat "$i" | grep -H --label="$i" -n "print_r"; done
№21
Найти файлы *.php и проверить их лексическим анализатором

$ find . -name "*.php" |\
while read i; do \
php -l "$i"; \
done

//Тоже самое - в виде одной строки (для удобства копипасты)
$ find . -name "*.php" | while read i; do php -l $i; done