
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 ll
e cut
conseguir 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 $input
um diretório legível é um exercício que deixarei para você.