Понякога трябва да намерим файлове на сървъра, който не знаем къде точно се намират:
Намира всички файлове от ./ със стринг ABC:
find ./ -name "*" -exec grep -H ABC {} \;
find ./ -type f -print | xargs grep -H "ABC" /dev/null
egrep -r ABC *
Намира всички файлове с големина по-голяма от 5Mb:
find /home -size +5000000c –print
или тук, ще намери файлове по-големи от 10Mb:
find ./ -size +10000k -print0 | xargs -0 ls -lh
За да намерим файлове на определен усер можем да търсим по user id number в системата: (може да отнеме време)
find / -user 501 –print
За да намерим всички файлове които са променени в последните 5 минути:
find ./ -cmin -5
а ето така можете направо да ги забършете (изтриете) :
find ./* -mtime +5 -exec rm -f {} \;
Можем да търсим за директории с определени permissions:
find / -perm -0002 -type d –print
Ето и за всички фаилове:
find / -perm -0002 -type f -print
find / -perm -2 ! -type l -ls
Файлове без асоцииран потребител към тях:
find / -nouser -o -nogroup –print
Файлове променяни ил исъздадени през последните 2 дена:
find / -mtime 2 -o -ctime 2
Следната команда ще покаже списък с SUID/SGID на програми във вашата система.
find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -l {} \;
Следващата командичка ще ви покаже колко на брой директории, линка и файла има в дадена папка
for t in files links directories; do echo `find . -type ${t:0:1} -follow | wc -l` $t; done 2> /dev/null
забележете че ако махнете "-follow" параметъра на find, няма да търси в /проследява/ симлинковете.
Със следната команда ще търсим във всички файлове от сегашната директория рекурсивно, които съдържат даден стринг (в примера стринга е "Lazy dogs!" ) и ще заменим този стринг със друг , който ще е "sexy dogs"
За специалните знаци ще трябва да се използва Escape character-а \
for file in `grep -Rl "Lazy dogs!" *`; do sed "s/Lazy dogs\!/sexy dogs/g" $file > /tmp/123; cat /tmp/123 > $file; rm /tmp/123; done
Много е удобна, но внимавайте как я използвате. (препоръчително е да имате backup преди да имажете всичко..)
А с тази, можете да извършите действие върху всеки .php файл - в случая сменяме permissions на 644 на всички .php файлове намерени от сегашната директория надолу!
for z in `find . -type f -name "*.php"`; do chmod 644 $z; done