Pregunta

Necesito un script que toma un solo argumento de línea de comandos que es una ruta de directorio. El script debe comprobar el argumento para determinar si en realidad es un directorio. Si se trata de un directorio, entonces el script debe cambiar el modo de protección de los subdirectorios ubicados en ella a 600. Si el argumento no es un directorio, a continuación, un mensaje apropiado debe ser impreso.

Tengo

if [-d $ 1]; entonces


else

echo "Este no es un directorio"

fi

Básicamente no sé qué poner en la línea en blanco. Yo estaba jugando con chmod, pero mi línea parecía querer cambiar la ruta de entrada y la no sólo los subdirectorios.

¿Fue útil?

Solución

if test -d "$1"; then
    find "$1" -type d -exec chmod 600 '{}' \;
else
    echo "Not a directory: $1" >&2
    exit 1
fi

Varias variantes pueden ser más rápido, sino que dependen de características no en find antigua o xargs.

find "$1" -type d -exec chmod 600 '{}' +
find "$1" -type d -print0 | xargs -0r chmod 600

Otros consejos

([ -d "$1" ] && find $1 -type d -mindepth 1 | xargs chmod 600 | true) || echo 'Not a directory'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top