Оболочка bash перебирает содержимое и исполняемость списка каталогов

В настоящее время я работаю над домашним заданием, и мне нужно взять заданный путь к каталогу и из этого списка файлы и каталоги в нем. Также в том числе, исполняемый он или нет. Я также ограничен тем, что мне не разрешено использовать какие-либо другие языки, кроме bash.

Моя первоначальная мысль заключалась в том, чтобы использовать ll и cut , чтобы получить то, что мне было нужно, но я не мог заставить это работать. Тогда я подумал, что могу использовать что-то вроде (не работает, просто идея)

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

Мне нужно, чтобы результат был чем-то вроде, и я не уверен, как туда добраться

имя-файла1 - исполняемый файл

файл -name2 не исполняется

каталог1 исполняется

0
16.02.2016, 19:05
2 ответа

Попробуйте, например,

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                   
0
28.01.2020, 04:52

Вы берете каталог, а затем проверяете чтобы увидеть, является ли сам каталог исполняемым, а не изучать его содержимое, как вы хотите.

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

Убедиться, что значение $ input доступно для чтения, - это упражнение, которое я оставлю вам.

0
28.01.2020, 04:52

Теги

Похожие вопросы