Создайте файл с именем is_file_or_directory.sh, содержащий:
cd "$1" || echo "Please specify a path" && exit
for i in *; do
if [[ -d $i ]]; then
echo "$i is a directory"
elif [[ -f $i ]]; then
echo "$i is a file"
else
echo "$i is not valid"
exit 1
fi
done
Сделайте этот файл исполняемым с:
sudo chmod +x is_file_or_directory.sh
Запустите скрипт, указав в качестве параметра путь, который вы хотите проанализировать:
./is_file_or_directory.sh /root/scripts/
Вывод:
jeeves ~/scripts/stack # ./is_file_or_dir.sh /root/scripts/
databe.py is a file
is_file_or_dir.sh is a file
mysql_flask.py is a file
test is a directory
Вот более подробное объяснение того, что происходит под капотом.Переменная $ 1 в Bash является первым параметром, отправляемым в сценарий.В нашем случае это путь, по которому скрипт будет выполнять свои действия.Затем мы используем переменную $ i в цикле.
$ i содержимым будет каждое имя файла / папки в пути $ 1.С помощью -d и -f мы проверяем, является ли $ i файлом или папкой.