对于这种类型的目录结构:
/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...
我知道我可以用来rm -rf /config/filesgroups
删除父文件夹和所有子文件夹...
但我只想删除/filegroupA
、/filegroupB
等,而不是删除/config/filegroups
答案1
rm -rf /config/filegroups/*
如果您只想删除目录(以及目录的符号链接),而不更改任何文件/config/filegroups
,则可以使用尾部斜杠:
rm -rf /config/filegroups/*/
如果你想删除名称以 a 开头的目录.
,假设你有一个相当新的 bash,你应该使用 dotglob shell 选项:
shopt -s dotglob
rm -rf /config/filegroups/*/
shopt -u dotglob
答案2
我更喜欢使用find
with -exec
,这会让你的电话像这样:
find /config/filegroups/ -maxdepth 1 -mindepth 1 -type d -exec rm -rf {} \;
答案3
这将删除包含/config/filegroups
“隐藏”文件和目录(名称以 开头.
)下的所有文件和目录。
find /config/filegroups -mindepth 1 -maxdepth 1 | xargs rm -rf
如果文件或目录名称包含空格,则必须这样做:
find /config/filegroups -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
奖励:您可以首先检查要删除的内容,如下所示:
find /config/filegroups -mindepth 1 -maxdepth 1
如果你想保留某些文件或目录,你可以这样做:
find /config/filegroups -mindepth 1 -maxdepth 1 -not -name "keep"
答案4
如果您已经在该文件夹中,则只需键入rm -rf ./**
所以:
cd /config/filesgroups
rm -rf ./**
这是一个全局模式,用于从本地路径中删除所有子文件夹。
./
指本地文件夹...以及**
下面的所有文件夹..