Actualmente estoy trabajando en una tarea y necesito tomar una ruta de directorio determinada y de esa lista los archivos y directorios que contiene. Al mismo tiempo que incluye si es ejecutable o no. También estoy restringido al no poder usar ningún otro idioma excepto bash.
Mi idea original era usar ll
y cut
obtener lo que necesitaba, pero parecía que no podía hacerlo funcionar. Entonces pensé que me vendría bien algo como (no funciona, sólo una idea)
read input
for f in $input
do
if [[ -x "$f" ]]
then
echo "$f is executable"
else
echo "$f is not executable"
fi
done
Necesito que la salida sea algo así como y no estoy seguro de cómo llegar allí
nombre-archivo1 es ejecutable
nombre-archivo2 no es ejecutable
directorio1 es ejecutable
Respuesta1
prueba me gusta
my=($(ls -la $dr |awk {'print $9'}))
echo ${my[@]}
for i in "${my[@]}"
do
if [[ -x "$i" ]]
then
echo "File '$i' is executable"
else
echo "File '$i' is not executable or found"
fi
done
Respuesta2
Está tomando un directorio y luego verificando si el directorio en sí es ejecutable, y no examina su contenido como desea.
read input
for f in ${input}/*; do
echo -n "$f is "
type=""
if [[ -x "$f" ]]; then
type="executable"
else
type="non-executable"
fi
if [[ -d "$f" ]]; then
type="$type directory"
fi
echo "$type"
done
Asegurarme de que el valor de $input
sea un directorio legible es un ejercicio que les dejaré.