如何删除大量文件

上一篇 / 下一篇  2012-12-05 14:01:32 / 个人分类:Unix

工作的过程中遇到一个这样的问题
由于程序崩掉,产生了超级多的log文件,在清理的时候,用rm *,提示数量太多无法处理。

后来找到了这样一个命令,我们来分析一下

find ./ -name "monitor*" |xargsrm

find命令比较常见,后面跟的./是当前目录,-name是按照name来匹配,当然你也可以使用-type或者-size等
后面的“”是一个模糊匹配

介绍下 |xargs rm
xargs是一条Unix类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

学习过程中,还看到这样的改进命令。(原文地址:http://blog.163.com/laser_meng@126/blog/static/16972784420117102638257/)
xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的, 因此文件名 ./file 1.log 被解释成了两个记录 ./file  1.log, 不幸的是 rm 找不到这两个文件.

为了解决此类问题, 聪明的人想出了一个办法, 让 find 在打印出一个文件名之后接着输出一个 NULL 字符 ('\0') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符. 这就是 find 的 -print0 和 xargs 的 -0 的来历吧.


你可能要问了, 为什么要选 '\0' 而不是其他字符做分隔符呢? 这个也容易理解: 一般的编程语言中都用 '\0' 来作为字符串的结束标志, 文件的路径名中不可能包含 '\0' 字符.

TAG:

 

评分:0

我来说两句

Open Toolbar