Portál AbcLinuxu, 31. října 2025 00:14
Název adresáře, ve kterém chceme hledat, zadáváme vždy jako první (pokud jej vynecháme, použije se pracovní adresář).To vynechání je AFAIK právě GNU rozšíření a pokud nemáte GNU tak bude find kousat. Jinak pointa je v tom, že těch cest může být jedna a více.
find /bin /usr/bin -name find
V případě, že ukončujeme argumenty hned za uvedením {}, můžeme místo středníku použít znak „+“.Tady by se hodilo říci, že plus mění postup volání programu:
find /bin -exec prog '{}' ';'
=>
prog /bin/bash
prog /bin/cp
...
find /bin -exec prog '{}' '+'
=>
prog /bin/bash /bin/cp ...
Hodilo by se srovnání s -execdir.
Dále by se hodilo vysvětlit co je to -print, -printf a -print0. A že -print je default. To -print0 tam sice máte ale není z toho člověk moc moudrý.
#!/bin/sh find . -name "$1"Používám ho denně, například:
git add `sifi HlubokoVBalíčcíchPohřbenýSoubor.java` xdg-open `sifi HlubokoVBalíčcíchPohřbenýSoubor.java`
git add **/HlubokoVBalíčcíchPohřbenýSoubor.java xdg-open **/HlubokoVBalíčcíchPohřbenýSoubor.javaNení to lepší? (Nějaký novější bash to už prý umí také)
find -depth -mindepth 1 -maxdepth 5 \( -type f -o -type l \) \( -name '*.docx' -o -iname '*.doc' \) -delete
Oveľa lepšie je:
- napísať si kratší find
* s pár parametrami
* jeho výsledok:
1) prochádzať v cykle
2) vypísať si medzivýsledky!
ls -lR | grep foojednodušší než
find . -name '*foo*'ale chápu že to může chápat někdo jiný :)
find tedy bude pracovat s tím klasickým vlastníkem a skupinou, ale nebude umět třeba vypsat jen soubory, ke kterým má v ACL nastavená práva určitá skupina.
find -iname *.pdf a find -iname '*.pdf'
Na dotaz s temi apostrofy mi to vrati vice vysledku, ale nechapu proc.
Muzete mi to nekdo prosim vysvetlit ?
find je opravdu čistě GNU/Linuxová záležitost. Na ostatních UNIXových či UNIX-like systémech se chová naprosto jinak a spoustu věcí neumí.
Pokud chcete psát cross-platform skripty, je lepší se findu vyhnout.
Nekamenujte mě. Píšu to jen proto, že seriál se jmenuje Unixové nástroje, nikoli Linuxové nástroje.
Jinak uznávám, že GNU verze je prostě nejlepší a preferuju ji. Bohužel né všude je k dispozici…
iconvem soubor z jednoho kódování do toho samého a tak podobně. Upravit skript tak, aby mu tyto drobnosti nevadily, je v pohodě. V případě findu je to kolikrát major redesign (a následný major rewrite).
Navíc né každý plně implementuje UNIX Specification. Každý druhý má své Exceptions: because of backward compatibility, you know, heh.
. Myslim si, ze findu se nelze uplne vyhnout, ale je treba omezit parametry jen na ty zakladni.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.