Nejsem si jistý, co na tom dělám špatně. Přečetl jsem spoustu příspěvků a webů, ale stále mám problémy.
Potřebuji v systému zkontrolovat soubory, které se za poslední den změnily, ale musím přeskočit určité připojené složky, protože jsou připojeny k diskům s tuny TB.
Zde je nastavení:
Mám několik jednotek připojených ke složkám uvnitř /usr/local/connect/
/usr/local/connect/logs –> připojených k NFS
/usr/ local/connect/DR01 –> připojí se ke sdílené složce DR
několik dalších podobných…
Chci spustit normální příkaz find (nebo jakýkoli příkaz, který by pro to fungoval), který tyto adresáře vylučuje. Zde jsou věci, které jsem zkoušel, ale zdá se, že nefungují.
najít ! -cesta “/usr/local/connect/” -type f -name “*.txt” -mtime -1
najít -type f -path “/usr/local/connect/” -prune -o -name “*.txt” -mtime -1
Zdá se, že ani jedno z toho nefunguje. Zkoušel jsem to udělat v různých pořadích (jako -typ f první nebo prořezávat první v řadě atd.). Ale četl jsem, že švestka odstraní pokračující cestu. Zdá se, že by to mělo být snadné. Dejte mi vědět, pokud vidíte moji chybu! Předem děkuji!
Přijatá odpověď:
-path "/usr/local/connect/"
by odpovídalo pouze cestě k souboru, která je přesně /usr/local/connect/
. To se nikdy nebude shodovat, protože s find .
, všechny cesty budou začínat .
Takže byste chtěli:
find / -path '/usr/local/connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print
-print
je také důležité. Bez něj by existoval implicitní -print
pro soubory, které odpovídají celému výrazu (takže obě části -o
).
Všimněte si, že můžete také použít -xdev
aby se zabránilo překročení jakékoli hranice souborového systému.
Pokud jej chcete spustit pomocí find .
když je aktuální adresář /usr/local
, to by muselo být:
cd /usr/local &&
find . -path './connect/*' -type d -prune -o \
-name '*.txt' -type f -mtime -1 -print