bash shell percorre o diretório listando o conteúdo e a executabilidade

bash shell percorre o diretório listando o conteúdo e a executabilidade

Atualmente estou trabalhando em uma tarefa de casa e preciso pegar um determinado caminho de diretório e listar os arquivos e diretórios nele contidos. Ao mesmo tempo que inclui se é executável ou não. Também estou restrito por não ter permissão para usar outros idiomas, exceto o bash.

Meu pensamento original era usar lle cutconseguir o que precisava, mas não consegui fazê-lo funcionar. Então pensei que poderia usar algo como (não funciona, apenas uma ideia)

read input
for f in $input
do
if [[ -x "$f" ]]
then
echo "$f is executable"
else
echo "$f is not executable"
fi
done

Preciso que a saída seja algo parecido e não sei como chegar lá

nome-do-arquivo1 é executável

file-name2 não é executável

diretório1 é executável

Responder1

Tente gostar

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                   

Responder2

Você está pegando um diretório e verificando se o diretório em si é executável, e não examinando seu conteúdo como deseja.

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

Certificar-se de que o valor de $inputum diretório legível é um exercício que deixarei para você.

informação relacionada