• 搜索文件



    搜文件
    which 搜索一些命令 (echo $PATH 这下面的路径下搜索)
    whereis 在固定的地方可以模糊匹配
    locate updatedb yum install -y mlocate (查的是后面生成的那个数据库) updatedb(更新库,系统每天更新一次)
    find -type -name -mtime -atime -ctime
    stat 命令可以查看三个time

    6. linux下的链接文件
    ln
    软连接 硬连接


    find /dir/ -mtime +10 10天前,-10就是10天后


    ln -s /var/log/messages /tmp/1.txt 将前面连接到后面,左边是源,右边是目标
    ls -l /tmp/1.txt
    lrwxrwxrwx 1 root root 17 3月 17 20:50 /tmp/1.txt -> /var/log/messages

     


    [root@vin tmp]# find . -type f -name 333 f代表文件
    ./222/333


    [root@vin ~]# find / -type d -name 6666 d代表目录
    /root/aaa/6666


    find / -mtime +10十天前 创建更改时间大于10天的

    find / -mtime -10 十天内

     

    [root@vin ~]# stat aaa 查看目录或者文件的访问情况
    File: "aaa"
    Size: 4096 Blocks: 8 IO Block: 4096 目录
    Device: 803h/2051d Inode: 131355 Links: 3
    Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2015-03-20 20:43:53.862554570 +0800 访问时间
    Modify: 2015-03-20 20:43:52.720555425 +0800 创建或者更改时间
    Change: 2015-03-20 20:43:52.720555425 +0800 更改inode或者原数据的时间


    [root@vin 222]# stat .

     


    touch 文件时能同时更改 mtime atime ctime

    ====================================================================================

    find /data/log/ -mtime +30 -type f |xargs rm -f 就是查找到这个目录下30天前的文件删除掉,xargs就是借助的意思

    find /data/log/ -mtime +30 -type f -exec rm {} ; 代表脱意的意思,和上条命令一样的效果


    find /data/log/ -mtime +30 -type f |xargs -i mv {} {}.bak
    给搜索到的文件一个一个地改名字。-i和{}意思就是把查找列出来的文件一行一行地去处理
    比如搜索到的是1,就是1.bak 是2就是2.bak


    [root@vin tmp]# ls
    1.txt 2 3
    [root@vin tmp]# find ./ -type f |xargs -i mv {} {}.bak =============
    [root@vin tmp]# ls
    1.txt 2.bak 3.bak

     

    exec与xargs
    exec 和find同时使用,意思是对这些查找的东西做一下什么操作
    查找当前目录创建时间大于10天的文件并删除 :find . -mtime +10 -exec rm -rf {} ;
    批量更改文件名: find ./* -exec mv {} {}_bak ;
    find /var/log/ -type f -mtime +2 |xargs -i mv {} {}_bak

    xargs 用在管道符号后面,可以和很多命令一起使用
    find . -mtime +10 |xargs rm -rf
    ls -d ./* |xargs -n1 -i{} mv {} {}_bak !!!!!!!

    xargs 可以把多行变成一行 cat 1.txt|xargs


    find . -type f -size -4k |xargs du -sh 查找大小为4k的文件

    find . maxdepth 1 -type f -size -4k 在当前目录下第一层目录下查找

    find . maxdepth 1 -type f -size -4k |xargs -i mv {} /tmp/

    mv `find . maxdepth 1 -type f -size -4k` /tmp/ 和上面的意思一样
    ``这个符号的意思是,里面的结果作为前面那个命令的参数


    要查找某个用户所使用的磁盘空间,在使用 find 命令的同时,您需要结合使用 du 命令以仅报告特定用户的磁盘使用情况。
    $ find . -user root -type f -exec du -k {} ;
    find . -user root -type f |xargs du -k

    要获得摘要信息,换句话说,即某个特定用户所使用的总空间,您可以使用 awk 对该信息进行总计,并打印出最后的值:
    $ find . -user root -type f -exec du -k {} ;|awk '{ s = s+$1 } END { print "Total used: ",s }'

     

    对于组,您可以根据相同的原则对 find 使用 -group 选项:
    $ find . -group mcslp -type f -exec du -k {} ;|awk '{ s = s+$1 } END { print "Total used: ",s }'


    =============================================

    linux下批量删除空文件(大小等于0的文件)的方法

    find . -name "*" -type f -size 0c | xargs -n 1 rm -f

    用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如:
    find . -name "*" -type f -size 1024c | xargs -n 1 rm -f

    就是删除1k大小的文件。(但注意不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

    查询出所有的空文件夹
    find -type d -empty
    删除文件

    列出搜索到的文件
    find . -name "shuaige.txt" -exec ls {} ;

    批量删除搜索到的文件
    find . -name "shuaige.txt" -exec rm -f {} ;

    删除前有提示
    find . -name "shuaige.txt" -ok rm -rf {} ;

    删除当前目录下面所有 test 文件夹下面的文件
    find . -name "test" -type d -exec rm -rf {} ;

    //删除文件夹下面的所有的.svn文件
    find . -name '.svn' -exec rm -rf {} ;

    注:
    1.{}和之间有一个空格
    2.find . -name 之间也有空格
    3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件

     

     

     

     

  • 相关阅读:
    我的shell脚本
    Shell中[]里面的条件判断
    编写shell脚本需要特别关注的注意点
    Excel文本获取拼音
    netsh wlan start hostednetwork
    windows cmd 看服务cpu、内存
    cmd cvf war包
    PLSQL查询最近编绎、创建、修改过的过程函数
    根据sid或sqlID查询SQL
    JS字符串类型转日期然后进行日期比较
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4606376.html
Copyright © 2020-2023  润新知