gpt4 book ai didi

linux - 一条命令删除目录及其子目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:17 26 4
gpt4 key购买 nike

我正在尝试删除 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/abc -type f -exec rm {}\;现在只剩下目录了

/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 {} \;

所以我想在一个命令中删除所有空目录。我知道这里发生了什么。当我第一次运行时 find/srv/abc/-type d -empty -exec rmdir {}\; 它删除了那个实例的空目录(这是 test1 , test3 , test2/test4 但不是 test2 )

那么,如果 test2 的子目录也为空,我该如何删除同一命令中的 test2 呢?

谢谢

最佳答案

rmdir 命令有一个可选的 -p--parents 选项:

   -p, --parents
remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is similar to 'rmdir a/b/c a/b a'

该选项应该可以满足您的需求。


在您的示例目录中...

/srv/abc/
├── test1
├── test2
│ └── test4
└── test3

使用 rmdir -p/srv/abc/test4 将删除 test4test2 目录,但不会删除 abc 目录,因为它仍然包含 test1test2
从那里,rmdir -p/srv/abc/test1 只会删除 test1,但在那之后,rmdir -p/srv/abc/test3 将删除 test3abc

关于linux - 一条命令删除目录及其子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com