Exemple de utilizare a comenzii find

access_time 2013/04/01

Search“find” este frecvent utilizat pentru a căuta fișiere în baza mai multor criterii, cum ar fi numele fișierului, data modificării, mărimea.

Această comandă are o multitudine de parametri și condiții de căutare, facând-o foarte puternică și plăcută în utilizare ;) Mai multe puteți găsi consultând man-ul, iar mai jos vă voi prezenta doar câteva exemple ce le utilizez mai frecvent

Sintaxa: find [pathnames] [conditions]

Cum găsesc fișiere ce conțin un cuvânt specific în numele său?
Comanda de mai jos caută toate fișierele și directoriile ce conțin “mail” în denumire:
# find /etc -name "*mail*"

Cum găsesc fișiere mai mari decât x MB?
Pentru a căuta toate fișierele mai mari decât 100MB pe întreg sistemul, rulez:
# find / -type f -size +100M

Cum găsesc fișiere ce nu au fost modificate mai mult decât x zile?
Următoarea comandă va afișa lista de fișiere din directoriul curent ce nu au fost modificate mai mult de 30 de zile:
# find . -mtime +30

Cum găsesc fișiere ce au fost modificate în ultimile x zile?
Pentru a găsi fișierele ce au fost modificate pe parcursul a ultimelor 2 zile rulez:
# find . -mtime -2

Cum șterg toate arhivele *.tar.gz care-s mai mari decât 100MB?
Puțină precauție nu strică, în special când execuți comenzi de sub root. Primul pas ar fi listarea fișierelor, revizuirea listei și doar apoi ștergerea lor:
# find / -type f -name *.tar.gz -size +100M -exec ls -lh {} \;
# find / -type f -name *.tar.gz -size +100M -exec rm -f {} \;

sau

# find / -type f -name *.tar.gz -size +100M -delete

Cum arhivez fișiere ce nu au fost modificate de mai bine de 60 de zile?
Comanda ce urmează va căuta fișierele mai vechi de 60 de zile în directoriul /home/user și le va adăuga în arhivă având ca nume data curentă /tmp/<ddmmyyyy>_archive.tar.
# find /home/user -type f -mtime +60 | xargs tar -cvf /tmp/date '+%d%m%Y'_archive.tar

Cum limitez căutarea doar într-un directoriu, fără a urma arborele de subdirectorii?
Comanda de mai jos va căuta fișiere mai vechi de 7 zile în /tmp, fără a răscoli mai adânc în subdirectorii:
find /tmp -maxdepth 1 -type f -ctime +7

Cum găsesc recursiv doar directorii sau doar fișiere, și le schimb permisiunile?

find /path/to/base/dir -type d -exec chmod 755 {} +
find /path/to/base/dir -type f -exec chmod 644 {} +

sau

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)

sau

find /path/to/base/dir -type d -print0 | xargs -0 chmod 755
find /path/to/base/dir -type f -print0 | xargs -0 chmod 644

folder_openAssigned tags
content_copyCategorized under