Snažím se získat všechny soubory maskou v nějakém adresáři bez rekurzivního vyhledávání v podadresářích. Neexistuje žádná možnost -maxdepth 0 v AIX za to.
Slyšel jsem o -prune , ale stále nemohu pochopit, jak to funguje.
Předpokládám, že příkaz by měl vypadat nějak takto
find dir \( ! -name dir -prune -type f \) -a -name filemask
ale nefunguje to.
Mohl byste mi prosím napsat správný příkaz a vysvětlit, jak to bude fungovat?
UPD
Zdá se, že příkaz
find dir ! -path dir -prune
vytiskne všechny soubory a katalogy v dir , ale ne soubory a katalogy v dir/* , takže jej mohu použít pro svůj případ.
Přijatá odpověď:
Chtěli byste:
find dir/. ! -name . -prune -type f -name filemask
Nebo:
find dir ! -path dir -prune -type f -name filemask
Chcete-li najít běžné soubory zvané filemask v dir bez hledání v podadresářích dir .
Pomocí find dir ! -name dir -prune , měli byste problémy, pokud by existoval dir/dir adresář.
dir/. přístup to řeší, protože find nenarazí na žádný jiný soubor s názvem . než tento dir/. soubor předán jako argument.
-path přístup to řeší tak, že se podívá na cestu k souborům (na rozdíl od samotného názvu), -path dir bude odpovídat v dir , ale ne na dir/dir (takže dir bude jediný adresář, který nebude ořezán). -path nemusí být k dispozici ve starších verzích AIX.
Obecněji řečeno, pro standardní ekvivalent GNU -maxdepth n , viz Omezit hledání POSIX na určitou hloubku?