10 марта 2011 г.

unix: find

1. Найти файлы старше 5 дней:
$ find . -mtime +5

2. Получить информацию о файле( размер, дата доступа, владелец и т.д.) можно с помощью опции -printf  "%параметр" (см. man find)
Например:
$ find test.pl -printf "%s"    покажет размер файла test.pl
$ find test.pl -printf "%u"    покажет владельца
и т.д.

3. Изменить права рекурсивно
To change permissions recursively for all files in a
directory

$ find dirname -exec chmod xxx {} \; -print
where dirname is the directory you want to change permissions.

4. Найти самые большие файлы
$ find / -xdev -size +1024 -exec ls -al {} \; | sort -r -k 5
или
$ find /var -mount -ls -xdev | /usr/bin/sort -nr +6 | more

5. Найти файлы больше заданного размера
Найти файлы больше 1440k :

$ find . -size +1440k -exec ls -ld '{}' \;

6. Найти все *.gz файлы в текущей папке за исключением вложенной папки secondary и переместить найденное в папку ttt.
find . -type f -name "*.gz"  -print|grep -v "secondary"|xargs -i mv {} ttt/{}

7. Найти все *.gz файлы в текущей папке за исключением вложенной папки log и удалить
find . -type f -name "*.gz"  -print|grep -v "log"|xargs rm

8. Заархивировать все файлы в папке, кроме уже запакованных файлов:
find . -type f ! -name "*.gz" -exec gzip {} \;

9. Изменить права только файлов

find ./ -type f | xargs chmod a-x

10. Удалить файлы старше 5 дней
find . -mtime +5  -exec rm -i {} \;