linux - find命令详解

find

  1. find命令
    find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
  2. 格式:
    find PATHNAME [-option] [-exec] command {} \;

    PATHNAME:查找的路径名

    【-option】:可选择的匹配参数

    【-exec command】:将查找到的文件执行command操作

    {}:查找到的文件名

    \; :反斜杠代表转义,分号代表结束符

  3. option参数

    • -name 按名字查找

    • -perm 按文件权限查找

    • -user 按文件属性查找

    • -group 按文件组进行查找

    • -nouser 按查找无有效属主的文件,即文件属组在/etc/groups中不存在

    • -mtime -n/+n 按文件更改时间来查找,-n指n天之内,+n指n天之后

    • -mmin -n/+n ​按文件更改时间来查找,-n指n分钟之内,+n指n分钟之后

    • -atime(amin)-n/+n 按文件访问时间来查找文件,-n指n天(分钟)之内,+n指n天(分钟)之后​

    • -ctime(mmin)-n/+n 按创建时间来查找

    • -never f1 !f2 查找更改时间比f1新但比f2旧的文件

    • -type [b| d| c| p| l| f] 查找块设备,目录,字符设备,管道,符号链接,普通文件

    • -size n/c 查长度为n块[或n字节]的文件

    • -follow​ 如果遇到符号链接,就跟踪链接所指文件

    • -prune 忽略某个目录​
  4. 举个栗子
    1、查找指定目录下大于300M的文件,并将其移动到指定的路径中
    find ~ -size +300M
    find ~ -size +300M -exec mv {} ~/sql/ \;
    2、查找指定目录下大于300M的文件,并将其删除的两种方式

    find ./ -size +300M -delete
    find ./ -size +300M -exec rm -rf {} \;
    3、查找指定目录下大于1G而小于1.5G的文件
    find ./ -size +1G -size -1.5G
    4、查找指定目录下非.sh结尾的文件的两种方法

    find ./ -not -name ‘*.sh‘
    find ./ ! -name ‘*.sh‘
    5、删除7天前对数据库的备份文件
    find /bakcup/ -type f -name ‘*.sql‘ -mtime +7 -exec rm -rf {} \;
    6、查找当前目录下以.sh结尾的文件,但是排除子目录为script目录下的文件
    find . -path ‘./script‘ -prune -o -name ‘*.sh‘
    7、查找当前目录下以.py结尾的文件,并将其修改为.pyc
    find ./ -name ‘*.py‘ -exec mv {} ‘{}c‘ \;
    8、查找当前目录下所有文件,并把文件中的hello字符串替换成Hello
    echo ‘hello world!‘ > test01.txt
    echo ‘hello teacher!‘ > test02.txt
    find ./ -type f -exec sed -i ‘s@hello@Hello@g‘ {} \;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值