Как root, как я могу создать запись в crontab других пользователей

Чтобы просмотреть удаленные каталоги, просто вставьте-print:

find. -type d -empty -print -delete

Это приведет к удалению любой под-иерархии под текущим пустым каталогом, при этом будут отображаться пути к удаленным каталогам.

Действие -deleteподразумевает -depth, т. е. обход начнется снизу структуры каталога и будет продвигаться вверх (на глубину -первого -обхода ). Это означает, что в любом каталоге, который может рассматриваться как подлежащий удалению, уже будут обработаны его подкаталоги -(, и они будут удалены, если они были пусты ).

Пример:

$ mkdir -p 1/2/3/4/5/6
$ tree
.
`-- 1
    `-- 2
        `-- 3
            `-- 4
                `-- 5
                    `-- 6

6 directories, 0 file
$ find. -type d -empty -print -delete
./1/2/3/4/5/6
./1/2/3/4/5
./1/2/3/4
./1/2/3
./1/2
./1
$ tree
.

0 directory, 0 file

Если в одном каталоге есть файл:

$ mkdir -p 1/2/3/4/5/6
$ touch 1/2/3/file
$ tree
.
`-- 1
    `-- 2
        `-- 3
            |-- 4
            |   `-- 5
            |       `-- 6
            `-- file

6 directories, 1 file
$ find. -type d -empty -print -delete
./1/2/3/4/5/6
./1/2/3/4/5
./1/2/3/4
$ tree
.
`-- 1
    `-- 2
        `-- 3
            `-- file

3 directories, 1 file

Чтобы вывести список каталогов, содержащих только подкаталоги, но не удаляя их (, используйтеbash):

shopt -s globstar
for dir in./**/; do
    if [ -z "$(find "$dir" ! -type d -exec echo x \;)" ]; then
        printf '%s\n' "$dir"
    fi
done

Это зациклится на всех подкаталогах в текущем каталоге (уединенно, используя **глобус оболочки ), а затем попытается найти что-то, что не является каталогом ни в одном из них. Если что-то найдено, то этот каталог не пустой, в противном случае выводится путь к пустому каталогу.

В GNU findвы можете добавить -quitв самый конец приведенной выше команды find(после \;), чтобы немного ускорить процесс.

3
05.08.2021, 12:37
0 ответов

Теги

Похожие вопросы