首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何可靠地管理-fr *?

如何可靠地管理-fr *?
EN

Stack Overflow用户
提问于 2017-03-25 19:26:09
回答 4查看 1.4K关注 0票数 3
代码语言:javascript
复制
rm -fr *

不会删除.files

另一方面,

代码语言:javascript
复制
rm -fr * .*

会删除太多!

是否有可靠的方法递归删除Bash中目录的所有内容?

我能想到的一种方法是:

代码语言:javascript
复制
rm -fr $PWD
mkdir $PWD
cd $PWD

这会产生暂时删除$PWD的副作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-25 19:36:52

我建议先用:

代码语言:javascript
复制
shopt -s dotglob

dotglob:如果设置,bash在路径名展开的结果中包含以.开头的文件名

票数 6
EN

Stack Overflow用户

发布于 2017-03-25 19:47:48

代码语言:javascript
复制
rm -fr * .*

相对“安全”。rm被POSIX禁止在...上运行。

代码语言:javascript
复制
rm -rf . .. 

虽然它将返回1。如果您不希望错误返回,您可以:

代码语言:javascript
复制
rm -rf .[!.]* 

这是POSIX标准,不需要bash扩展。

您还可以使用find:

代码语言:javascript
复制
find . -delete 
票数 1
EN

Stack Overflow用户

发布于 2017-03-25 20:02:51

你可以用find-delete-maxdepth

代码语言:javascript
复制
find . -name "*" -delete -maxdepth 2

因此,假设您位于temp目录中,如下所示:

代码语言:javascript
复制
./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的文件名。出于安全原因。这个选项暗示了深度优先遍历处理。下面的符号链接与此选项不兼容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43020931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档