Bash скрипт для поиска каталогов в системе содержит> 1000 файлов? - PullRequest
0 голосов
/ 26 августа 2011

Мне нужен способ найти все каталоги на сервере, которые содержат более определенного числа файлов (например, 1000+).Я работаю на многих больших серверах и иногда нахожу каталоги, содержащие миллионы маленьких файлов журнала.Мне нужен способ найти эти каталоги.

Я думал о том, как написать сценарий полного каталога, а затем выполнил ... ll |wc -l ... но думал, что может быть лучший / более быстрый способ сделать это?

В идеале я собираюсь настроить этот скрипт для запуска в crontab, который будет запускаться раз в неделю.* Ура, Stu

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Я бы предпочел:

[[ `ls -1 | wc -l` -gt 1000 ]] && echo `pwd` 

И цикл вокруг ... Но без цикла:

 ls -1R|awk -F "\n" 'BEGIN {RS="\\n\\n"} NF>1000 {print $1, NF-1}'

РЕДАКТИРОВАТЬ:

поскольку awk не может обрабатывать такие большие записи (более 3000 байт), я бы сказал:

for dirz in `find . -type d -print` ; do
    [[ `ls -1 $dirz | wc -l` -gt 1000 ]] && echo $dirz
done

HTH

0 голосов
/ 30 августа 2011

Я бы сделал двухэтапный подход, вот так (непроверенный):

find / -type d -exec sh -c "find {} -depth 1 -type f -print | wc -l" \; | while read F N
  do
     [ $N -gt 1000 ] && echo $F $N
  done
...