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?