对于这种类型的dir
结构:
\\rdwlhsdevserver\root\user1\folders\testdat.txt
\\rdwlhsdevserver\root\abhay\testdat.txt
\\rdwlhsdevserver\root\testuser\folders1\folder2\testdat.txt
\\rdwlhsdevserver\root\devadmin\input\testdat.txt
\\rdwlhsdevserver\root\admin\testdata\testdat.txt
我知道我可以用来rm -rf <<folderPath>>
删除父文件夹和所有子文件夹,但我想删除除\\\rdwlhsdevserver\root\Childfolder
运行后cmd
,输出应如下所示:
\\rdwlhsdevserver\root\user1\
\\rdwlhsdevserver\root\abhay\
\\rdwlhsdevserver\root\testuser\
\\rdwlhsdevserver\root\devadmin\
\\rdwlhsdevserver\root\admin\
答案1
rm -rf /path/to/root/*/*
注意:请首先通过创建类似的测试目录结构来测试这一点。你的 shell 可能不支持这种语法(我在 bash 和 zsh 上测试过)。
答案2
使用 GNU 或 BSD find
:
find /path/to/root -mindepth 2 -delete
和zsh
:
rm -rf /path/to/root/*/*(D)
但请注意,如果 中存在指向目录的符号链接/path/to/root
,则会按照它们删除其中的文件。您还可能会遇到Arg list too big
错误,可以通过启用rm
内置函数来解决该错误:
zmodload zsh/files
rm -rf /path/to/root/*/.(D)
(内置版本rm
可以删除.
)
如果您不想遵循符号链接:
zmodload zsh/files
dirs=(/path/to/root/*(D/)) && rm -rf $^dirs/.