我正在尝试删除目录中的所有文件和子目录。我曾经rm -r
删除所有文件,但我想删除所有文件和子目录,不包括顶级目录本身。
例如,我有一个像images
.它包含文件header.png
和footer.png
一个子目录。
现在我想删除header.png
,footer.png
和子目录,但不删除images
。
我怎样才能在Linux中做到这一点?
答案1
如果您的顶级目录名为images
,则运行rm -r images/*
。这使用 shell glob 运算*
符rm -r
在images
.
答案2
要删除隐藏文件,您必须指定:
rm -r images/* images/.*
对于包含.
和的 shell ..
,这将导致类似的错误
rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'
但它会删除隐藏文件。
没有错误消息的方法是使用 find/delete 和 mindepth。这是 gnu-find。
find images -mindepth 1 -delete
您的发现可能缺少-mindepth
or-delete
谓词,在这种情况下,您可以这样做:
find images/. ! -name . -prune -exec rm -rf {} +
答案3
删除所有文件和目录(包括隐)在目录中,您可以尝试以下操作:
用于
ls -Ab
匹配所有文件/目录cd dir_name && rm -rf `ls -Ab`
用于
find
匹配所有文件/目录find dir_name -mindepth 1 -delete
或者,如果您
find
不支持-delete
:find dir_name -mindepth 1 -exec rm -rf {}
删除该文件夹,然后重新创建它
rm -rf dir_name && mkdir dir_name
在bash中,
shopt -s dotglob rm -rf dir_name/*
答案4
试试这个版本:
rm -r test/*