Bash Alias non trovato errore

1

Ho il seguente comando che sto cercando di inserire in un alias bash. Il comando da solo funziona bene, ma quando provo ad alias, sto ricevendo i seguenti errori:

Il comando

find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr

Alias

alias csfiles='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr'

L'errore:

-sh: alias 0: not found
-sh: alias {} \; | sort nr: not found

Penso che questo significhi che non sto usando le virgolette giuste, ma sto riscontrando problemi nel determinare la combinazione corretta. Aiuto?

    
posta zeeple 20.11.2018 - 18:51
fonte

2 risposte

2

Invece di un alias, usa una funzione. Inoltre, non utilizzerei il segnaposto di find- {} come parametro nello script inline.

csfiles () {
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'for dir
do
        echo "$(find "$dir" -type f | wc -l)" "$dir"
done' sh {} + | sort -nr
}
    
risposta data 20.11.2018 - 21:49
fonte
1

Questo comando dovrebbe funzionare:

alias csfiles='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr'

in pratica per il comando echo devi cambiare da "a"

    
risposta data 20.11.2018 - 19:07
fonte

Leggi altre domande sui tag