LINUX.ORG.RU

Как в bash определить пуста ли директория?


0

0

ДОброго всем!

Каким образом в bash можно определить пуста ли заданная директория. Как я понял проерять на нулевой размер, используя -s - это не верно. Наткнулся на конструкцию вида:
dir=${1:-.} # for a standalone script
set -- $dir/.??* $dir/.[!.] $dir/*
case $#$* in
"3$dir/.??* $dir/.[!.] $dir/*")
echo empty ;;
*)
echo not empty ;;
esac
Но какая-то загонная. Может есть проще?
Спасибо

anonymous

где то так :
find $dir -name \* -o -name .\* | echo "$dir is empty"

сорри, сразу проверить не могу - пишу с виндовой машины



MKuznetsov ★★★★★
()
Ответ на: комментарий от Pi

>t.k. "." i ".." v odnu stroku obychno vyvoditsi :)

ls определяет ввыводит ли она в pipe или на tty, и соотвественно в pipe "." и ".." будут на разных строках

fghj ★★★★★
()
Ответ на: комментарий от MKuznetsov

>Pi : [ `ls -a | wc -l` -eq 2 ] наверное будет даже лучше

ls -A выведет все файлы кроме . и .. -- я бы лучше так сделал и сравнивал соответственно с нулём.

Хотя вариант sdio IMHO лучший.

php-coder ★★★★★
()
Ответ на: комментарий от php-coder

Это в OpenBSD так Theo сделал ? Ты на ночь ещё не молишься на него ? Или перед едой там...

anonymous
()
Ответ на: комментарий от Pi

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

Teak ★★★★★
()

find zzz -prune -empty -printf empty

io ★★
()

Самое простое что приходит на ум (проверил на всякий под базибоксом)
[ -z "`ls /dir/patg`" ] && echo "Empty" || echo "No empty"
ну или в развернутом виде:
if [ -z "`ls /dir/patg`" ]
then
echo "Empty"
else
echo "No empty"
fi

Ant0
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.