find - korišćenje komande

Uputstva, saveti i trikovi

Moderator: Urednik

Post Reply

Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 1053
Joined: 18 Feb 2012, 15:14
Location: Despotovac
Contact:

Post Napisano: 16 May 2012, 01:45


Najjednostavniji način korišćenja ove komande jeste:

Code: Select all

$ find
Ovo će izllistati sve fajlove i foldere (kao i one skrivene, kao i njihov celokupni sadržaj) u trenutnom direktorijumu, prateći hijerarhijski poredak. Ovo isto možete učiniti i komandom:

Code: Select all

$ find . 
Tačka (.) na krakju komande označava trenutni direktorijum (onaj u kome se nalazite). Dakle, umesto tačke može da stoji putanja do direktorijuma u kome želite da vršite pretragu.

Za pretragu fajlova koji u nazivu imaju reč font koristite sledeću sintaksu:

Code: Select all

$ find . -name "*font*"
Ovakvom komandom vršite pretragu u trenutnom direktorijumu. Znači, komanda može da ima i ovakav oblik, na primer:

Code: Select all

$ find /usr/share -name "*font*"
Pretraga se sada vrši u /usr/share direktorijumu...

Pretraga fajlova čiji naziv počinje sa FreeSans, na lokaciji /usr/share:

Code: Select all

$ find /usr/share -name "FreeSans*"
Da biste zanemarili preciziranje velikih i malih slova (što je u Konzoli veoma važno), možete koristiti opciju -i, tj. umesto -name pišete -iname:

Code: Select all

$ find /usr/share -iname "freesans*"
Pretraga fajlova (sa ekstenzijom txt) koji su kreirani u poslednja dva dana, u trenutnom direktorijumu:

Code: Select all

$ find . -mtime +2 -iname "*.txt"
Ukoliko želite da kao izlaz komande donijete samo nazive fajlova (bez putanje do istih) koristite opciju -printf:

Code: Select all

$ find /usr/share -name "gimp*"
Izlaz ove komande bi bio:

Code: Select all

/usr/bin/gimp-remote
/usr/bin/gimptool-2.0
/usr/bin/gimp-2.6
/usr/bin/gimp-console-2.6
/usr/bin/gimp-console
/usr/bin/gimp
/usr/bin/gimp-remote-2.6
Upotrebom opcije -printf dobija se sledeći izlaz:

Code: Select all

$ find /usr/share -name "gimp*" -printf "%f\n"

Code: Select all

gimp-remote
gimptool-2.0
gimp-2.6
gimp-console-2.6
gimp-console
gimp
gimp-remote-2.6
Pretraga slike (sa ekstenzijom .png) u trenutnom direktorijumu koja je veća (ili jednaka) od 500 KB:

Code: Select all

$ find . -size +500k -name "*.png"
Ili pretraga slike koja je veća od 1 MB:

Code: Select all

$ find . -size +1M -name "*.png"
Umesto znaka plus (+) možete koristiti i znak minus (-) kako biste tražili fajl (u primeru - sliku) manji od zadate veličine:

Code: Select all

$ find . -size -10c -name "*.jpg"
10c označava veličinu od 10 B

Uvek možete koristiti i pipe (pajp) iliti uspravnu crtu. Na taj način možete zadatu komandu (tačnije, rezultat zadate komande) da prosledite drugoj. Na primer, ako biste želeli da u trenutnom direktorijumu izlistate sve slike (sa ekstenzijom .png) koje su veće od 2 MB i da pritom imate uvid u dozvole nad tim slikama, upotrebićete dodatnu komandu xargs iza pipe:

Code: Select all

$ find . -size +2M -name "*.png" | xargs ls -lh
Ili, ukoliko želite da ih uklonite:

Code: Select all

$ find . -size +2M -name "*.png" | xargs rm -r
Još jedna od značajnih mogućnosti komande find je pretraga fajla čije ste ime zaboravili, ali se sećate reči koje taj fakjl sadrži. Na primer, tražite neki dokument koji je sačuvan u .odt formatu, ali ne znate tačno kako se zove, a pritom znate da sadrži reč slackware:

Code: Select all

$ find ~/ -name "*.odt" -exec grep -l "slackware" {} +
I na kraju, ako želite da pronađete 20 najvećih fajova:

Code: Select all

$ find . -type f -print0 | xargs -0 du -h | sort -hr | head -20 



Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 1053
Joined: 18 Feb 2012, 15:14
Location: Despotovac
Contact:

Post Napisano: 16 May 2012, 11:46


Ljudi, svako ko više koristi ovu komandu i zna druge oblike (sintakse), neka doda dole... Tako ćemo da imamo koliko-toliko kompletirano ,,uputstvo'' za korišćenje find-a. ;)



Administrator
Administrator
offline
User avatar

Posts: 4591
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 16 May 2012, 13:44


Da li može par primera iz SBo šablona? :) U pitanju su pretraživanje po dozvolama, odnosno vrsti datoteka.

Pronađi sve datoteke sa 777, 775, 711, 555, 511 ili 666, 664, 600, 444, 440 dozvolama i promeni ih u 755 (rwx,rx,rx), odnosno 644 (rw,r,r).

Code: Select all

find .  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \)  -exec chmod 755 {} \; -o  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \)  -exec chmod 644 {} \;
Pronađi sve obične datoteke u $PKG/usr/man i kompresuj ih sa "gzip -9".

Code: Select all

find $PKG/usr/man -type f -exec gzip -9 {} \;



Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 2168
Joined: 08 Jun 2010, 13:28
Location: Centralna Srbija Kraljevo
Contact:

Post Napisano: 16 May 2012, 13:50


Svaka čast za temu Slackmuz, jako korisna stvar. :beer:
Uvek možete koristiti i pipe (pajp) iliti uspravnu crtu. Na taj način možete zadatu komandu (tačnije, rezultat zadate komande) da prosledite drugoj. Na primer, ako biste želeli da u trenutnom direktorijumu izlistate sve slike (sa ekstenzijom .png) koje su veće od 2 MB i da pritom imate uvid u dozvole nad tim slikama, upotrebićete dodatnu komandu xargs iza pipe:

Kod: Obeleži sve
$ find . -size +2M -name "*.png" | xargs ls -lh
Pitanje.
Da li je ova sintaksa dobra premda umesto slika u /home/brok dobijem ceo sadržaj istog, a ne samo slike sa .png ekstenzijom koje su "teže" od 2 mg?

Code: Select all

bash-4.1$ find . -size +2M -name "*.png" | xargs ls -lh
total 7.6M
drwxr-xr-x   3 brok users 4.0K Apr 26 13:50 Downloads
drwxr-xr-x   4 brok users 4.0K Feb 23 22:32 GNUstep
-rwxr-xr-x   1 brok root     0 Jan 29 00:36 GPG-KEY
-rw-r--r--   1 brok users 2.2K May  5 16:07 Laptop BCGROUP
drwx------   2 brok users 4.0K Apr 13 21:11 Mail
drwxr-xr-x   5 brok users 4.0K Feb  9 00:01 Photoshop
drwxr-xr-x   3 brok users 4.0K Apr 18 11:54 Razno
drwxr-xr-x  10 brok users 4.0K Feb  9 18:05 SecondLife
drwxr-xr-x   2 brok users 4.0K Apr 22 01:37 Skripte
drwxr-xr-x   2 brok root  4.0K Apr 25 22:19 VirtualBox VMs
drwxr-xr-x   9 brok users 4.0K Apr 15 14:43 bleachbit
-rwxr-xr-x   1 brok users  303 Apr 18 09:43 conky-1 (another copy).desktop
-rw-r--r--   1 brok root  3.3M Feb  7 16:19 dbus
-rwxr-xr-x   1 brok users 3.5K Jul 27  2011 flashcache
-rwxrwxr-x   1 brok users  67K Mar  9 07:15 screenfetch-dev
drwxr-xr-x 286 brok users  12K Mar  2 21:08 slackbuilds
-rwxr-xr-x   1 brok users 4.2M Feb 16 23:56 unetbootin-linux-568
drwxr-xr-x   2 brok users 4.0K Mar 22 12:55 vmware
drwxr-xr-x   2 brok users 4.0K Apr 13 13:47 Јавно
drwxr-xr-x   3 brok users 4.0K Apr 24 10:20 Видео
drwxr-xr-x   9 brok users 4.0K May 16 14:02 Документа
drwxr-xr-x   2 brok users 4.0K Apr 14 18:45 Музика
drwxr-xr-x   2 brok users 4.0K May 15 07:48 Радна површ
drwxr-xr-x  11 brok users 4.0K May 16 14:21 Слике
drwxr-xr-x   2 brok users 4.0K Jan 14 14:47 Шаблони



Administrator
Administrator
offline
User avatar

Posts: 4591
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 16 May 2012, 15:11


Nešto od Vivek Gite-a (NixCraft):
476718_460562377290479_126000117413375_1886054_645621357_o.jpg

Code: Select all

find . -type f -exec file -b '{}' \; -printf '%s\n' | awk -F, 'NR%2 {i=$1} NR%2==0 {a[i]+=$1} END {for (i in a) printf("%12u %s\n",a[i],i)}' | sort -nr
find + par linija u awku. Fensi izgleda. :)



Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 1053
Joined: 18 Feb 2012, 15:14
Location: Despotovac
Contact:

Post Napisano: 16 May 2012, 20:43


Broker wrote:Svaka čast za temu Slackmuz, jako korisna stvar. :beer:
Uvek možete koristiti i pipe (pajp) iliti uspravnu crtu. Na taj način možete zadatu komandu (tačnije, rezultat zadate komande) da prosledite drugoj. Na primer, ako biste želeli da u trenutnom direktorijumu izlistate sve slike (sa ekstenzijom .png) koje su veće od 2 MB i da pritom imate uvid u dozvole nad tim slikama, upotrebićete dodatnu komandu xargs iza pipe:

Kod: Obeleži sve
$ find . -size +2M -name "*.png" | xargs ls -lh
Pitanje.
Da li je ova sintaksa dobra premda umesto slika u /home/brok dobijem ceo sadržaj istog, a ne samo slike sa .png ekstenzijom koje su "teže" od 2 mg?

Code: Select all

bash-4.1$ find . -size +2M -name "*.png" | xargs ls -lh
total 7.6M
drwxr-xr-x   3 brok users 4.0K Apr 26 13:50 Downloads
drwxr-xr-x   4 brok users 4.0K Feb 23 22:32 GNUstep
-rwxr-xr-x   1 brok root     0 Jan 29 00:36 GPG-KEY
-rw-r--r--   1 brok users 2.2K May  5 16:07 Laptop BCGROUP
drwx------   2 brok users 4.0K Apr 13 21:11 Mail
drwxr-xr-x   5 brok users 4.0K Feb  9 00:01 Photoshop
drwxr-xr-x   3 brok users 4.0K Apr 18 11:54 Razno
drwxr-xr-x  10 brok users 4.0K Feb  9 18:05 SecondLife
drwxr-xr-x   2 brok users 4.0K Apr 22 01:37 Skripte
drwxr-xr-x   2 brok root  4.0K Apr 25 22:19 VirtualBox VMs
drwxr-xr-x   9 brok users 4.0K Apr 15 14:43 bleachbit
-rwxr-xr-x   1 brok users  303 Apr 18 09:43 conky-1 (another copy).desktop
-rw-r--r--   1 brok root  3.3M Feb  7 16:19 dbus
-rwxr-xr-x   1 brok users 3.5K Jul 27  2011 flashcache
-rwxrwxr-x   1 brok users  67K Mar  9 07:15 screenfetch-dev
drwxr-xr-x 286 brok users  12K Mar  2 21:08 slackbuilds
-rwxr-xr-x   1 brok users 4.2M Feb 16 23:56 unetbootin-linux-568
drwxr-xr-x   2 brok users 4.0K Mar 22 12:55 vmware
drwxr-xr-x   2 brok users 4.0K Apr 13 13:47 Јавно
drwxr-xr-x   3 brok users 4.0K Apr 24 10:20 Видео
drwxr-xr-x   9 brok users 4.0K May 16 14:02 Документа
drwxr-xr-x   2 brok users 4.0K Apr 14 18:45 Музика
drwxr-xr-x   2 brok users 4.0K May 15 07:48 Радна површ
drwxr-xr-x  11 brok users 4.0K May 16 14:21 Слике
drwxr-xr-x   2 brok users 4.0K Jan 14 14:47 Шаблони
Brok, ja dobijem samo slike :)
Ne znam u čemu je problem...



Prijatelj foruma
Prijatelj foruma
offline
User avatar

Posts: 1053
Joined: 18 Feb 2012, 15:14
Location: Despotovac
Contact:

Post Napisano: 16 May 2012, 22:24


Evo još jedne. Broji fajlove u direktorijumu:

Code: Select all

$ find . -type f | wc -l



Administrator
Administrator
offline
User avatar

Posts: 4591
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 31 Jan 2013, 22:39




Post Reply

Who is online

Users browsing this forum: No registered users and 34 guests