Страници: [1]
Изпечатай
Автор Тема: find  (Прочетена 1007 пъти)
ron
Administrator
Newbie
*****

Карма: 0
Публикации: 13


Профил Ел. поща
« -: November 06, 2008, 04:34:21 am »

Понякога трябва да намерим файлове на сървъра, който не знаем къде точно се намират:


Намира всички файлове от ./ със стринг 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

« Последна редакция: December 03, 2008, 05:39:12 pm от ron » Активен
Страници: [1]
Изпечатай
Отиди на: