Error de alias Bash no encontrado

1

Tengo el siguiente comando que estoy tratando de poner en un alias de bash. El comando por sí mismo funciona bien, pero cuando intento crear un alias, obtengo los siguientes errores:

El comando

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

El Alias

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

El error:

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

Creo que esto significa que no estoy usando las comillas correctamente, pero tengo problemas para determinar el combo correcto. Ayuda?

    
pregunta zeeple 20.11.2018 - 18:51

2 respuestas

2

En lugar de un alias usa una función. Además, no usaría el marcador de posición de find- {} como parámetro en el script en línea.

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
}
    
respondido por el fd0 20.11.2018 - 21:49
1

Este comando debería funcionar:

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

básicamente para el comando echo que necesita cambiar de 'a'

    
respondido por el Andrea Girardi 20.11.2018 - 19:07

Lea otras preguntas en las etiquetas