GNU/Linux >> Linux Esercitazione >  >> Linux

Trova i file e stampa solo le loro directory principali

Mi sto perdendo qualcosa qui. Sicuramente tutto questo regex e/o looping non è necessario, un one-liner farà il lavoro. Anche le soluzioni "for foo in $()" falliranno quando ci sono spazi nei nomi dei percorsi.

Basta usare dirname due volte con xargs, per ottenere parent's parent...

# make test case
mkdir -p /nfs/office/hht/info
mkdir -p /nfs/office/wee1/info
touch /nfs/office/hht/info/.user.log
touch /nfs/office/wee1/info/.user.log

# parent's parent approach
cd /nfs//office/ && find . -name '.user.log' | xargs -I{} dirname {} | xargs -I{} dirname {}

# alternative, have find print parent directory, so dirname only needed once...
cd /nfs//office/ && find . -name ".user.log" -printf "%h\n"  | xargs -I{} dirname {}

Produce

./hht
./wee1

Puoi farlo facilmente con le opzioni di formattazione del -printf azione di find (vedi man find ).

cd /nfs//office/ && find . -name '.user.log' -printf "%h\n"
./hht/info
./wee1/info

Dalla pagina man:

%h\n stamperà il percorso per ogni file su una nuova riga.

Tieni presente che -printf è solo GNU. Non funzionerà su macOS (un sistema BSD).


for file in $(find /nfs/office -name .user.log -print)
do
    parent=$(dirname $(dirname $file))
    echo $parent
done

EDIT:mi dispiace non aver voluto la directory dei nonni.


Linux
  1. Trova i file o le directory più grandi?

  2. Linux Elimina file e directory

  3. Come trovare ed eliminare directory e file vuoti in Unix

  4. Come trovare ed eliminare directory e file vuoti in Linux

  5. Come elencare in modo ricorsivo tutti i file e le directory

Come trovare una stringa o una parola specifica in file e directory

Trova comando in Linux (Trova file e directory)

Trascina e rilascia file e cartelle nel terminale per stampare il loro percorso assoluto

3 modi per trovare file e directory in Linux

Trova facilmente file e directory su Linux

Come faccio a trovare i file e sommare le loro dimensioni?