[总结]find的一些用法

我在csh下使用find的时候,搜索路径写成/path,搜索不到结果,需要写成/path/才行。


1.查找文件

find . -name "a"


2.查找目录

find . -type d -name "a"

查找目录时,最好将 .  换成 ./* ,这样在查找目录的时候不会将 . 也给显示出来。


3.查找除a以外的所有目录

find . -type d  ! -name "a"


4.查找除目录以外的所有用文件

find . ! -type d


5.查找文件后拷贝

find . -name "a" | xargs -i cp {} target_path/


6.删除N天前的文件

find . -mtime +{N-1} -delete

这里要注意删除N天前要用N-1,-mtime +1 中的 +1 表示大于 1, 因此至少是 2, 也就是 2 天前被修改过的文件


7.查找递归层数控制

find .  -maxdepth 1 ! -type d 

这里-maxdepth 1 表示只搜索当前目录下的文件,不搜索子目录下的文件。


8.同ls功能,查找当前目录里的非隐藏文件

find .  -maxdepth 1 ! -name ".*" -type d

注意这里的-name ".*" 要写在 -type d前面


9.查找多种后缀类型的文件

find . /( -name "*.sh" -or -name "*.perl" /) -type f

find . -regex ".*/./(sh/|perl/)$" 

如果对这里的正则表达式还有什么疑问,可以info emacs Regexps


10.只找名为a,非aa的文件

find . -regex ".*/<a/>"


11.碰到有些文件名中带有空格,在find出来的结果就会断掉,变成两个文件,从而程序出错,这时候我们需要用到0选项,

强制设置find找到的文件名以‘/0’结束。

find . -type f -print0 | xargs -i0 cksum {} > xxx.cat


12.find + tar使用find查找出最近修改过的*.c和*.h文件,然后打包

find . -name '*.[ch]' -mtime -1 | xargs tar czf backup_$(date +%m_%d).tar.gz


13.统计当前目录中所有文件的行数

find . -type f | xargs wc -l
注意:这里有个xargs,如果去掉,则统计的是当前目录的文件数。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值