经典一
1. find ./ -type f | xargs -n 1000 rm -f
此条命令删除当前目录下所有文件,即使当前目录高达四百万个文件也没问题(maildrop目录很多文件)
2. find ./* -type f | xargs -n 1000 rm -f
此条命令多了一个星号,意义就完全不一样了
[root@99-tl-api maildrop]# find ./* -type f | xargs -n 1000 rm -f
bash: /bin/find: Argument list too long
表示先遍历当前目录下所有文件,然后再继续后面的操作
1和2 对比,如何理解:
find ./ -type f 意思是,在当前目录下,匹配所有文件(-type f );这个匹配应该是根据元数据来进行的,所以效率非常高,并且所有的元数据信息量也没有那么大
或者
find 是直接 从当前目录的 元数据 里得到当前目录里的文件信息,比如文件数量
而 find ./* -type f 意思是,先遍历当前目录下所有文件,再匹配文件类型;遍历四百多万文件是什么概念,find直接报 如上 参数太多