rm -fr *不会删除.files
另一方面,
rm -fr * .*会删除太多!
是否有可靠的方法递归删除Bash中目录的所有内容?
我能想到的一种方法是:
rm -fr $PWD
mkdir $PWD
cd $PWD这会产生暂时删除$PWD的副作用。
发布于 2017-03-25 19:36:52
我建议先用:
shopt -s dotglob
dotglob:如果设置,bash在路径名展开的结果中包含以.开头的文件名
发布于 2017-03-25 19:47:48
rm -fr * .*相对“安全”。rm被POSIX禁止在.和..上运行。
rm -rf . .. 虽然它将返回1。如果您不希望错误返回,您可以:
rm -rf .[!.]* 这是POSIX标准,不需要bash扩展。
您还可以使用find:
find . -delete 发布于 2017-03-25 20:02:51
你可以用find和-delete和-maxdepth
find . -name "*" -delete -maxdepth 2因此,假设您位于temp目录中,如下所示:
./temp
|_____dir1
| |_____subdir1
X|_file X|_file |_file
|
X|_____dir2
X|_file查看树,使用上面的命令删除在它们旁边有一个X的文件和目录。subdir1被保留下来,因为find将删除文件的最大深度设置为2,并且其中存在一个文件。find将删除以.开头的文件--但是,它不适用于符号链接。
-delete删除找到的文件和/或目录。总是返回真。当find在树下递归时,这将在当前工作目录中执行。它不会尝试删除带有
/'' character in its pathname relative to的文件名。出于安全原因。这个选项暗示了深度优先遍历处理。下面的符号链接与此选项不兼容。
https://stackoverflow.com/questions/43020931
复制相似问题