Имя: Пароль:
IT
 
Подскажите скрипт по "пустой папке"
0 IVIuXa
 
26.11.09
07:38
linux
как реализовать если папка не пустая, то выполнить скрипт ?
1 Капитан Очевидность
 
26.11.09
08:39

There_Are_Files=`ls /path/to/your/folder | wc -l`
No_Files="       0"
if [ $There_Are_Files = $No_Files ]; then
echo "Файлов нет"
else
echo "Файлов аж $There_Are_Files"
fi
2 Asdef
 
26.11.09
08:40
(1) а как во фри бсд ?
3 Капитан Очевидность
 
26.11.09
08:41
(2) это я на фре и проверял. Это sh, он везде одинаковый
4 Капитан Очевидность
 
26.11.09
08:42
так-то
зы совсем забыл
5 IVIuXa
 
26.11.09
08:52
(4)
псибки ща проверю ;)
6 Fragster
 
гуру
26.11.09
08:56
-a забыл
7 Fragster
 
гуру
26.11.09
08:56
а то вдруг там скрытые файлы
8 Fragster
 
гуру
26.11.09
08:57
тока отгда надо 2 отнимать
9 Fragster
 
гуру
26.11.09
08:58
а вот с «-A» . и .. не показывает, то, что нужно
10 IVIuXa
 
26.11.09
09:19
(9)
есть вариант - до первого встреченного файла ?
а то их как бы ооочень много ?
11 Fragster
 
гуру
26.11.09
09:21
не понял?
12 IVIuXa
 
26.11.09
09:22
ну например по идее зачем ls весь ?
достаточно что хоть один файл есть - условие должно сработать,
а то пока весь ls выйдет - секунды 3 пройдет
13 IVIuXa
 
26.11.09
09:24
+(12)
а если нужно 3000 папок проверить на пустоту ?
ну это я так - к примеру
14 Fragster
 
гуру
26.11.09
09:32
hasfiles=0
for i in ~/*
do
 hasfiles=1
 break
done
echo $hasfiles
15 IVIuXa
 
26.11.09
09:34
(14)
во то что доктор прописал :)
16 Fragster
 
гуру
26.11.09
09:37
а лучше

#!/bin/bash

hasfiles=0
if [ -d $1 ]
then
 for i in $1/*
 do
   echo $i
   hasfiles=1
   break
 done
fi
echo $hasfiles

тока все равно на скрытые файлы забивает
17 IVIuXa
 
26.11.09
10:01
(16)
нарыл команду test ;)

if test -e /нужный_каталог; then echo "1"; else echo "0"; fi;

скрытые тоже видит ;)
18 Fragster
 
гуру
26.11.09
10:02
нифига. это проверка наличия самого /нужный_каталог
19 Fragster
 
гуру
26.11.09
10:02
по крайней мере в мане так написано
20 Fragster
 
гуру
26.11.09
10:04
кстати, «[ -d $1 ]» - это «test -d $1»
21 IVIuXa
 
26.11.09
10:05
(18)
ну да точно
22 IVIuXa
 
26.11.09
10:08
ну как то ведь скрытые файлы нащупывают ?
23 IVIuXa
 
26.11.09
10:19
(16)
чет скрипт не работает ;(
24 Fragster
 
гуру
26.11.09
11:50
(23) вызывается как
./имяскрипта папка
25 Fragster
 
гуру
26.11.09
11:50
ну и +x скрипту добавить не помешает
26 Fragster
 
гуру
27.11.09
15:18
кастую smaharbA в эту ветку! (сам что-то
найти не могу про обход скрытых файлов)
27 smaharbA
 
27.11.09
18:30
(26) -a
или не то ?
28 Fragster
 
гуру
27.11.09
18:33
(27) таки не то...
29 Fragster
 
гуру
27.11.09
18:34
покрайней мере не так:
 for i in $1/* -a
30 smaharbA
 
27.11.09
18:34
так пойдет ?

find . -type f | while read; do echo $REPLY; break; done
31 smaharbA
 
27.11.09
18:35
+(30) во фри нет РЕПЛИ
32 Fragster
 
гуру
27.11.09
18:35
(30) косяк тот же, что и в
ls -A | wc -l
если файлов дофига - тупит
33 smaharbA
 
27.11.09
18:38
(32) не ткпит, файнд последователен
34 smaharbA
 
27.11.09
18:38
лс выводит по завершению, файнд по мере
35 Fragster
 
гуру
27.11.09
18:39
(34) ага, тока как его грохнуть после первого вывода? городить потоки?
36 smaharbA
 
27.11.09
18:42
(35) см (30) это не фор
37 smaharbA
 
27.11.09
18:42
но наколоться можно на некоторые особенности
38 Fragster
 
гуру
27.11.09
19:05
ога, так типа работает. что за особенности?
39 smaharbA
 
27.11.09
19:24
(38) что с наруже цикла то  не есть что снутре и обратно
но можно и это асилить
40 Garlic
 
27.11.09
19:47
Забыл уже всё, может так?

#!/bin/bash
FILE=""
DIR="/tеmp"

if [ "$(ls -A $DIR)" ]; then
    echo "$DIR is not empty "
else
   echo "$DIR is empty"
fi
41 IVIuXa
 
30.11.09
05:00
(24)(25)
ну не на столько же я ..... ;)