Я пытаюсь удалить пустые каталоги в Linux. Прежде чем сделать это, я удаление файлов не доступ в последние 7 дней с помощью следующей командыУдалить каталог и его подкаталоги в одной команде
for x in $(cut -d: -f1 /etc/passwd); do
if [ -d "/srv/${x}" ]; then
find /srv/${x} -mindepth 1 -type f -not -amin -10080 -exec rm {} \;
fi
done
После того, как файлы будут удалены, я хочу, чтобы удалить пустую директорию. Для этого я делаю это следующим образом
for x in $(cut -d: -f1 /etc/passwd); do
if [ -d "/srv/${x}" ]; then
find /srv/${x} -type d -empty -exec rmdir {} \;
fi
done
Я попробовал это на следующий реж структуру
/srv/abc/
├── test1
│ └── test1 (This is File)
├── test2
│ └── test4
│ └── test2 (This is File)
└── test3
После выполнения/SRV/абв -типа е -exec гт {} \; Теперь только каталоги оставшиеся
/srv/abc/
├── test1
├── test2
│ └── test4
└── test3
Так что я побежал
find /srv/abc/ -type d -empty -exec rmdir {} \;
Теперь
/srv/abc/
└── test2
Затем снова
find /srv/abc/ -type d -empty -exec rmdir {} \;
Так что я хочу, чтобы удалить все пустые реж только в на e. Я знаю, что происходит. Когда я впервые запускаю find /srv/abc/ -type d -empty -exec rmdir {} \;
Он удаляет пустой каталог в этом экземпляре (который является test1, test3, test2/test4, но не test2)
Так как же удалить test2 в той же команде, если его подкаталоги также пусты?
Благодаря
Примечание: '-not -amin -10080' может быть заменен на' -amin + 10080' (изменение '-' на' + '). –
Спасибо за это предложение – roy
Вы не можете сделать это тривиально; из определения OS '(find) перспективы test2 (каталог в lvl 3) * не * пуст, так как в нем есть пустой подкаталог. – tink