在macos系统下递归删除文件或目录…

来源:互联网 发布:网络帅比照片 编辑:程序博客网 时间:2024/06/05 09:31

http://www.cnblogs.com/goodleixiao/archive/2012/03/30/2425016.html 

今天想删除.svn用git做版本管理,因为只有自己一个人,用.svn太麻烦,发现git还好用,特别是对个人而然。但是要删除.svn真的很麻烦,特别是在macos下,文件都是隐藏的,要打开隐藏比较麻烦。

注意:需要打开终端,输入sudo-s,并输入密码,才能看到隐藏文件。

如果用svn管理代码时,会发现项目目录会有.git隐藏文件,这个文件会影响svn的使用。必须先删除后才可正常使用svn。即时上传后发现远程服务器上有.git文件,也可在本地删除.git,然后commit,来删除服务器的.git文件。

# 删除当前目录下所有 .git 文件

 find . -name .git|xargs rm-rf

linux与macos是相通的找几条linux命令就可以删除。命令如下。

 

不过删除前最好看一下是否是想删除的东西。

 

# 删除当前目录下所有 .svn 文件

 find . -name .svn|xargs rm-rf

格式很简单,如下:

find 目录 -name 名称|xargs rm -rf

查找你要删除的文件夹或者文件,然后删除即可。

但是在macos下有一个问题,文件夹中有空格是不能删除的。

 

网上找的具体解说。

 

xargs – build and execute command lines from standard input

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。

下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
http://www.linuxsir.org/main/node/137

 

 

其他的删除方法:

 

在linux下没有类似DOS下 del/s *.dep的递归删除命令,不知道是不是我还没有找到合适的命令用法,为这个在DOS下非常容易的小问题我搜索了一下,发现这个问题是用find和rm命令组合实现的,因此还搜索了find的语法,因为find--help给出的说明太简单,根本无法看懂。

 

下面是实现的方法,不过删除前最好看一下是否是想删除的东西。

 

# 删除当前目录下所有 dep 文件

 

find . -name *.dep -type f -exec rm -f {} \;

 

# 删除当前目录下所有 linux64GccDPOpt 目录(包括里面的文件)

 

find . -name "linux64GccDPOpt" -type d -exec rm -rf {} \;

 

删除目录的命令提示:

find: ./Make/linux64GccDPOpt: No such file or directory

0 0
原创粉丝点击