GNU/Linux >> Linux Esercitazione >  >> Linux

Hai problemi con i comandi di ricerca che eliminano le directory?

Non sono sicuro di cosa sto sbagliando su questo. Ho letto un sacco di post e siti web, ma ho ancora problemi.

Devo controllare un sistema per i file che sono cambiati nell'ultimo giorno, ma devo saltare alcune cartelle montate poiché sono montate su unità con tonnellate di TB.

Ecco la configurazione:
Ho poche unità montate in cartelle all'interno di /usr/local/connect/
/usr/local/connect/logs –> monta su un NFS
/usr/ local/connect/DR01 –> monta su una condivisione DR
alcuni altri come questo...

Voglio eseguire un normale comando di ricerca (o qualsiasi comando che funzioni per questo) che escluda quelle directory. Ecco qualcosa che ho provato che non sembrava funzionare.

Trovare . ! -percorso “/usr/local/connect/” -tipo f -nome “*.txt” -mtime -1

Trovare . -type f -path “/usr/local/connect/” -prune -o -name “*.txt” -mtime -1

Nessuno di questi sembra funzionare. Ho anche provato a farlo in diversi ordini (come -type f first, o potato first in line, ecc.). Ma ho letto che prune rimuove il percorso successivo. Sembra che dovrebbe essere una cosa facile da fare. Fammi sapere se vedi il mio errore! Grazie in anticipo!

Risposta accettata:

-path "/usr/local/connect/" corrisponderebbe solo su un percorso di file che è esattamente /usr/local/connect/ . Questo non corrisponderà mai perché con find . , tutti i percorsi inizieranno con .

Quindi vorresti:

find / -path '/usr/local/connect/*' -type d -prune -o \
       -name '*.txt' -type f -mtime -1 -print

Il -print è anche importante. Senza di essa, ci sarebbe un implicito -print per i file che corrispondono all'intera espressione (quindi entrambe le parti di -o ).

Nota che puoi anche usare -xdev per impedire il superamento di qualsiasi limite del file system.

Se vuoi eseguirlo con find . quando la directory corrente è /usr/local , dovrebbe essere:

cd /usr/local &&
  find . -path './connect/*' -type d -prune -o \
         -name '*.txt' -type f -mtime -1 -print

Linux
  1. Come eliminare ricorsivamente directory con caratteri jolly?

  2. Trova un file con i comandi Trova e individua in Linux

  3. Trova e sostituisci con sed nella directory e nelle sottodirectory

  4. bash trova le directory

  5. Trova directory con tutti i file all'interno più vecchi di X?

Cos'è Git Bash; Lavorare con i comandi Git Bash

Cheat sheet sui comandi Linux:con esempi

Trova comando in Linux (Trova file e directory)

Comandi Nmap con esempi

Due comandi per trovare facilmente file e directory in Debian 11

come posso eliminare in modo ricorsivo le directory vuote nella mia home directory?