Combina due comandi di ricerca di bash

1

Ho due comandi find simili che fondamentalmente ho lo stesso codice per entrambi una volta che il ciclo while ha inizio. Voglio combinarli quindi ho solo bisogno di un find per cercare tra file e directory, invece di cercare le directory e uno per cercare i file. Ecco i due che voglio combinare in un'unica riga:

find "$ORIG_DIR" -name "*" -type d | while read dname

find "$ORIG_DIR" -name "*" -type f | while read fname
    
posta Erick 20.01.2014 - 21:32
fonte

2 risposte

0

Puoi fornire più% opzioni% co_de con -type , come -o in un singolo comando.

find "$ORIG_DIR" -name "*" -type d -o -name "*" -type f | while read file

-type d -o -type f corrisponde a tutti i parametri, quindi -o viene fornito due volte nel comando precedente.

    
risposta data 20.01.2014 - 21:33
fonte
0

Puoi usare il comando test per vedere se si tratta di un file o di una cartella:

find "$ORIG_DIR" | while read thing; do
    if [[ -d "$thing" ]]; then
        # do whatever you want to do with the directory
    fi
    if [[ -f "$thing" ]]; then
        # do whatever you want to do with the file
    fi
done
    
risposta data 20.01.2014 - 21:36
fonte

Leggi altre domande sui tag