Polecenie find

Znak . określa bieżący katalog a znak .. katalog nadrzędny. Argument -print wyświetla plik i foldery z użyciem separatora \n. -print0 używa separatora \0. 

find . -print 

-iname ignoruje wielkość liter 

find . -iname “plik*” -print  

Operator -a i -and pozwala wykonać logiczną operację AND, natomiast opcje -o i -or umożliwiają wykonanie logicznej operacji OR

find . \( -name “*.txt” -o -name “*.pdf” \) -print 

Polecenie wykorzystuje operator -and do znalezienia tylko plików rozpoczynających się na literę s, w którym występuje także e

find . \( -name “*e*” -and -name “s* \)

Wyrażenia regularne 

find . -regex ‘.*\.(\py\|sh\)$’

Ograniczenie poziomu zagnieżdżenia -maxdepth i -mindepth 

Wyświetlenie wszystkich plików, których nazwa rozpoczyna się od litery p i które w odniesieniu do bieżącego katalogu są położone co najmniej dwa podkatalogi niżej, użyj: 

find . -mindepth 2 - name “p*” -print 

Wyświetl listę wyłącznie katalogów z uwzględnieniem katalogów podrzędnych 

find . -type d -print 

Wyświetla listę plików 

find . -type f -print 

Wyświetla listę dowiązań symbolicznych

find . -type l -print 

Typy plików Argument 

Zwykły plik f

Dowiązanie symboliczne l

Katalog d

Specjalne urządzenie znakowe c

Urządzenie blokowe b

Gniazdo s

Kolejka FIFO p

Wyszukiwanie oparte na czasie powiązanym z plikami

Czas dostępu – ostatni znacznik czasu, który określa, kiedy plik został użyty przez danego użytkownika

-atime 

Czas modyfikacji – ostatni znacznika czasu, który określa, kiedy plik został zmodyfikowany

-mtime

Czas zmiany – ostatni znacznik czasu, który określa, kiedy zostały zmodyfikowane metadane pliku np. uprawnienia lub prawo właściciela 

-ctime 

Opcje te mogą być określone z wartoścami całkowitymi identyfikuącymi liczbę dni. Tym wartościom często towarzyszą znaki – lub +. Znak – minus oznacza mniejsze niż, natomiast znak + większe niż 

Wyświetl wszystkie pliki, do których dostęp został uzyskany w ciągu ostatnich 7 dni 

find . -type f -atime -7 -print 

Wyświetl wszystkie pliki, do których dostęp został uzyskany dokładnie 7 dni temu  

find . -type f -atime 7 -print 

Wyświetl wszystkie pliko do których dostęp został uzyskany ponad 7 dni temu 

find .-type f -atime +7 -print 

Parametry oparte na czasie, które mierzone są w minutach

Czas dostępu

-admin 

Czas modyfikacji 

-mmin

Czas zmiany

-cmin

Wyświetlenie wszystkich plików, do których dostęp uzyskano wcześniej niż 7 min temu

find . -type f -min +7 -print 

Określenie pliku referencyjnego na potrzeby porównania z wykorzystaniem znacznika czasu. 

-newer 

Aby na przykład znaleźć wszystkie pliki z czasem modyfikacji późniejszym niż czas modyfikacji danego pliku plik.txt wykonaj 

find . -type f -newer plik.txt -print 

Wyszukiwanie oparte na wielkości plików 

find . -type f -size +2k  // pliki przekraczające 2kb 
find . -type f -size -2k // pliki mniejsze niż 2kb 
find . -type f -size 2k // plik o wielkości 2kb 

Jednostki wielkości: 

b – bloki  512bajtowe,

c – bajty, 

w – dwa słowa bajtowe,

k – kilobajty 1024,

M – megabajty 1024 kilobajty,

G – gigabajty 1024 megabajty. 

Dopasowanie na podstawie uprawnień plików i ich praw właściciela 

Wyświetlanie plików z uprawnieniami 644

find . -type f -perm 644 -print 

Wyświetlanie plików, które nie mają właściwych uprawnień 

find . -type f - name “*.php” ! -perm 644 - print

Szukanie plików użytkownika tomasz z parametrem -user 

find . -type f -user tomasz -print 

Usuwanie plików *.txt w bieżącym katalogu

find . -type f -name  “*.txt” -delete

Wykonywanie poleceń -exec

Za pomocą opcji -exec polecenie find może być połączene z wieloma innymi poleceniami 

Polecenie find wykorzystuje parę nawiasów klamrowych {} jako reprezentację nazwy plików. W poniższym przykładzie dla każdego dopasowanego pliku ciąg {} zostanie zastąpiony nazwą plików. Następnie zostanie zmieniony właściciel pliku.

find . -type f -user root -exec chown tomasz {} \; 

Uwaga! Polecenie jest zakończone w postaci sekwencji ucieczki. w przeciwnym razie zostanie potraktowany przez powłokę jako koniec polecenie find zamiast jako koniec polecenie chwon 

Jeśli polecenie przyjmuje wiele argumentów, to zamiast średnikiem można je zakończyć znakiem +. Znak plus umożliwia poleceniu find tworzenie listy wszystkich plików, które pasują do parametrów wyszukiwania, i uruchomienia aplikacji z wszystkimi plikami w jednym poleceniu. 

Poniższe działanie można wykonać za pomocą każdego z działań:

find . -type f -name “*.c” -exec cat {} \;>all_c_files.txt
find . -type f -name “*.c” -exec cat {} > all_c_files.txt \;
find . -type f -name “*.c” -exec cat {} > all_c_files.txt \;

Kopiowanie wszystkich plików txt istniejących 10 dni do katalogu OLD

find . -type f -mtime +10 -name “*.txt” -exec cp {} OLD \;

Uwaga! Parametr -exec nie może użyć wielu poleceń, ale można dodać skrypt
-exec ./commans.sh {} \; 

Pomijanie określonych podkatalogów przez polecenie find

Wykluczenie plików pasujących do wzorca -prune

find . -name ‘.git’ -prune -o -type f -print 

W celu przyspieszenia operacji najpierw wyklucz potem szukaj. 

find . -type f -exec bash -c 'echo "This file found" >>"$1"' _ {} \;