Shell脚本学习笔记

find 命令

1.基于文件名或者正则表达式搜索

例子:匹配多个条件 find . \( -name "*.txt" -o -name "*.pdf" \) -print 找到当前目录中所有txt pdf文件输出

      加-o 表示OR条件  \(  \)将中间部分视为一个整体

     find  . -regex ".*\( \.py\|\.sh\)$“  -regex 基于正则表达式匹配

2.基于目录深度搜索

     用 -maxzdepth指定最大深度

3.根据文件类型搜索

     用 - type对文件搜索进行过滤 -type f表示只搜索普通文件 l表示符号链接 d 目录 s 套接字

4.利用find执行命令或者动作

      加上-exec选项   例如 find . -type f -user root -exec chown slynux {} \    {}将会被替换为所有匹配的文件名

     可以结合printf 输出有用信息 例如 find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \

      将find出来的东西拷到另一个地方
      find *.c -exec cp ‘{}’ /tmp ‘;’

5.find和xargs的结合使用

xargs结合find使用

来自: http://man.linuxde.net/xargs
xargs结合find使用

来自: http://man.linuxde.net/xargs

    重命名find出的文件

    find / -name a | xargs -i mv {} b

   # {} 代表找到的文件

   # -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。

用rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用xargs去避免这个问题:

来自: http://man.linuxde.net/xargs
用rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用xargs去避免这个问题:

来自: http://man.linuxde.net/xargs
     用find匹配并列出所有的.txt文件 然后用xargs将这些文件删除

    find . -type f -name "*.txt" -print0 | xargs -0 rm -f   这样删除所有.txt 文件 xargs -0 将\0作为输入定界符

    也可以加 -delete选项来删除  find . -type f -name "*.txt" -delete

 

  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值