LINUX.ORG.RU
решено ФорумAdmin

[Solved] Ищу захламлённый каталог

 , ,


2

3

Что бы сюда:

find /path/ -type d -iname "*" -exec sh -c "ls -l {} | wc -l " \;
добавить чтобы выводило название каталогов только при условии, что в них содержится файлов больше определённого числа?

Криво:

find /del_usr/ -type d -iname "*" -exec sh -c 'printf "%10d %s\n" "$(ls -lf {}  | wc -l)" "{}"' \;  > /tmp/tmp.test ; sort -n /tmp/tmp.test

или

find /del_usr/ -type d -iname "*" -exec sh -c 'printf "%10d %s\n" "$(ls -lf {}  | wc -l)" "{}"' \;  > /tmp/tmp.test ; sort -nr /tmp/tmp.test | head -n 33 

но работает, завернуть -exec в трубку с помощью «+ |»(???) что-то не получилось :-(

Вопрос с обработкой чисел на выходе из трубки остаётся открытым :-(

★★

Последнее исправление: jia (всего исправлений: 2)

Зачем ls -l — это «дорого» — значительно «дешевле» ls -1f

anonymous
()

добавить чтобы выводило название каталогов только при условии, что в них содержится файлов больше определённого числа?

добавить awk

anonymous
()

-iname «*»

В чем смысл?

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

эээ нужно после сортировки trimright \/.* then uniq count then sort again

almost spell pipe chain but input not from words but find судя по всему.

du

qulinxao ★★☆
()

не знаю насколько это удобно, я бы еще посоветовал, если на десктопе ищите - гуй-прогу, но, к сожалению, от DE'шек: filelight, baobab/mate-disk-usage-analyzer

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

KRoN73Криво:

find /del_usr/ -type d -iname "*" -exec sh -c 'printf "%10d %s\n" "$(ls -lf {}  | wc -l)" "{}"' \;  > /tmp/tmp.test ; sort -n /tmp/tmp.test
или
find /del_usr/ -type d -iname "*" -exec sh -c 'printf "%10d %s\n" "$(ls -lf {}  | wc -l)" "{}"' \;  > /tmp/tmp.test ; sort -nr /tmp/tmp.test | head -n 33 

но работает, завернуть -exec в трубку с помощью «+ |»(???) что-то не получилось :-(

Спасибо за помощь :-)

jia ★★
() автор топика
Последнее исправление: jia (всего исправлений: 1)
Ответ на: комментарий от qulinxao

qulinxao, вельми благодарствую, решение в первом сообщении, бессовестно потырено из вашей ссылки :-)

printf forever!

jia ★★
() автор топика

чтобы выводило название каталогов только при условии, что в них содержится файлов больше определённого числа?

# если в директории больше 100 файлов 

find /dir -type d -print0 | xargs -0 -L1 -I{} sh -c 'DIR="{}"; NUM=$(find "$DIR" -type f -maxdepth 1 | wc -l); [ $NUM -gt 100 ] && echo "$DIR"'
anonymous
()
Ответ на: комментарий от anonymous

Спасибо, не могу уже исправить сообщение :-(

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

anonymous

find /dir -type d -print0 | xargs -0 -L1 -I{} sh -c 'DIR="{}"; NUM=$(find "$DIR" -type f -maxdepth 1 | wc -l); [ $NUM -gt 100 ] && echo "$DIR"'


Чрезвычайно интересно, обязательно попробую!То, что меня всегда интересовало — сравнение в строке!

jia ★★
() автор топика
Последнее исправление: jia (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.