GNU/Linux >> Znalost Linux >  >> Linux

Máte problémy s hledáním příkazů prořezáváním adresářů?

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

Linux
  1. Jak rekurzivně odstranit adresáře pomocí zástupných znaků?

  2. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  3. Příkazy hledání pro Linux

  1. Najít a nahradit sed v adresáři a podadresářích

  2. bash najít adresáře

  3. Najít adresáře se všemi soubory staršími než X?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Nahrávání adresářů pomocí sftp?

  3. jak mohu rekurzivně odstranit prázdné adresáře v mém domovském adresáři?