Dav*_*ith 28 shell wildcards rm
如何删除目录中的所有内容,包括隐藏文件和目录?
现在,我使用以下内容:
rm -rf *
rm -rf .*
Run Code Online (Sandbox Code Playgroud)
use*_*own 18
简单直接:
find -delete
Run Code Online (Sandbox Code Playgroud)
包括目录和隐藏文件。至少 gnu-find 知道-delete
,您find
可能会有所不同。
Chr*_*lle 11
最好的答案是:不要那样做。递归删除目录本身,然后将其重新创建为空目录。其他人更可靠、更容易理解您正在尝试做什么。当您重新创建目录时,它可能具有不同的所有者、组和权限。如果这些很重要,请小心。此外,如果任何正在运行的程序在目录上具有打开的文件句柄(描述符),那么您将不想删除它。如果这些特殊情况都不适用,那么删除整个目录会更简单。
rm -rf -- * .[!.]* ..?*
Run Code Online (Sandbox Code Playgroud)
如果三个模式中的每一个都不匹配,则扩展到自身,但这在这里不是问题,因为我们想要匹配所有内容并rm -f
忽略不存在的参数。
请注意,.*
将匹配..
.
假设 bash 4+:
shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*
Run Code Online (Sandbox Code Playgroud)
启用 dotglob 后,*
将扩展到所有文件和目录,即使是那些以.
-开头但不扩展到.
and 的文件和目录..
,因此可以安全地使用rm
.
gla*_*dim -2
尝试rm -rf *?*
。这将删除正常文件和隐藏文件。