对于这种类型的目录结构:
/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以rm -rf /config/filesgroups
用来删除父文件夹和所有子文件夹......
但我想只删除/filegroupA
,/filegroupB
等等,而不是删除/config/filegroups
evi*_*oup 36
rm -rf /config/filegroups/*
Run Code Online (Sandbox Code Playgroud)
如果您只想删除目录(和目录的符号链接),而保留任何文件/config/filegroups
不变,您可以使用尾部斜杠:
rm -rf /config/filegroups/*/
Run Code Online (Sandbox Code Playgroud)
如果你还想删除名称以 a 开头的目录.
,假设你有一个相当新的 bash,你应该使用 dotglob shell 选项:
shopt -s dotglob
rm -rf /config/filegroups/*/
shopt -u dotglob
Run Code Online (Sandbox Code Playgroud)
这将删除/config/filegroups
包括“隐藏”文件和目录(名称以 开头.
)下的所有文件和目录。
find /config/filegroups -mindepth 1 -maxdepth 1 | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
如果文件或目录名称包含空格,您必须这样做:
find /config/filegroups -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
Run Code Online (Sandbox Code Playgroud)
奖励:您可以先检查将要删除的内容,如下所示:
find /config/filegroups -mindepth 1 -maxdepth 1
Run Code Online (Sandbox Code Playgroud)
如果你想保留某些文件或目录,你可以这样做:
find /config/filegroups -mindepth 1 -maxdepth 1 -not -name "keep"
Run Code Online (Sandbox Code Playgroud)
小智 5
我更喜欢使用find
with -exec
,这会让你的电话是这样的:
find /config/filegroups/ -maxdepth 1 -mindepth 1 -type d -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)