1 votos

Error de Alias de Bash no encontrado

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

El mando

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 bien las comillas, pero tengo problemas para determinar la combinación correcta. ¿Ayuda?

2voto

Michael Zhou Puntos 167

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

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
}

1voto

txyoji Puntos 263

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 necesitas cambiar de ' a `

0 votos

A primera vista eso no parece equivalente, ¿no se bifurcará y devolverá el resultado en su lugar en lugar de ser un argumento para el comando? (Sangría con 4 espacios para el formato del código, de lo contrario el comando será analizado para los caracteres de formato, ver la vista previa al componer su puesto).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X