Удаление всех подпапок, содержащих меньше файлов X - PullRequest
0 голосов
/ 13 сентября 2018

Я хотел бы удалить все подпапки, содержащие менее X файла в папке

Следующий код выполняет поиск в тех подпапках, которые содержат меньше X файла:

$ find . -type d -exec sh -c 'set -- "$0"/*; [ $# -le 10 ]' {} \; -print
./digna_1919
./digna_2040
./digna_1682
(more output omitted) 

Так что я могу найтиих!Но если я сделаю это, я получу «Каталог не пустой»:

$ find . -type d -exec sh -c 'set -- "$0"/*; [ $# -le 10 ]' {} \; -delete
find: cannot delete ‘./digna_1919’: Directory not empty
find: cannot delete ‘./digna_2040’: Directory not empty
find: cannot delete ‘./digna_1682’: Directory not empty
(more output omitted)

И если я сделаю это, я получу «Нет такого файла или каталога»:

$ find . -type d -exec sh -c 'set -- "$0"/*; [ $# -le 10 ]' {} \; -exec rm -r "{}" \;
find: ‘./digna_1919’: No such file or directory
find: ‘./digna_2040’: No such file or directory
find: ‘./digna_1682’: No such file or directory
(more output omitted)

Где я?Я делаю не так?Большое спасибо!

Источник кода

1 Ответ

0 голосов
/ 13 сентября 2018

Используйте -depth, чтобы find обрабатывал содержимое каждого каталога до самого каталога.Вы захотите делать это каждый раз, когда удаляете элементы.

...