我有一个名为outer
.
outer
包含一个名为的目录inner
(其中包含许多相同扩展名的文件)
我cd
到outer
。如何删除其中的所有文件inner
但保留目录inner
(但为空)?
如果你想删除目录的内容而不是目录本身,你需要做的就是告诉rm
删除内容:
rm inner/*
Run Code Online (Sandbox Code Playgroud)
这将删除其中的所有非隐藏文件./inner
并保持目录完好无损。要同时删除任何子目录,请使用-r
:
rm -r inner/*
Run Code Online (Sandbox Code Playgroud)
如果您还想删除隐藏文件,您可以这样做(假设您使用的是 bash):
shopt -s dotglob
rm -r inner/*
Run Code Online (Sandbox Code Playgroud)
最后一个命令将删除 中的所有文件和所有目录inner
,但会inner
保持完整。
最后,注意你不需要cd
对outer
运行任何这些:
$ tree -a outer/
outer/
??? dir
??? inner
??? dir
??? file
??? .hidden
3 directories, 2 files
Run Code Online (Sandbox Code Playgroud)
我现在可以rm -r outer/inner/*
从当前目录运行,无需运行cd outer
,它将删除除目录本身之外的所有内容:
$ shopt -s dotglob
$ rm -r outer/inner/*
$ tree -a outer/
outer/
??? dir
??? inner
2 directories, 0 files
Run Code Online (Sandbox Code Playgroud)