zoukankan      html  css  js  c++  java
  • Linux基础命令之文件和目录操作(二)

    . find

      用于查找目录下的文件,也可以调用其他命令使用

      find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

      find  【选项】            【路径】【操作语句】

      

      options:

        -depth        # 在指定目录下最深层的子目录开始查找

        -maxdept levels    # 查找最大目录级数,levels为自然数

        -regextype type    # 正则表达式类型,默认是emacs,

      tests:

        -mtime [-n|n|+n]        # 按文件的修改时间查找文件 ,单位是“天”

        -atime [-n|n|+n]         # 按文件的访问时间查找文件

        -ctime [-n|n|+n]         # 按文件的状态改变时间查找文件

        -mmin             # 按文件的修改时间查找文件,单位是“分钟”

        -amin              # 按文件的访问时间查找文件

        -cmin              # 按文件的状态改变时间查找文件

        -group            # 按文件所属的组来查找文件

        -name            # 按文件名查找文件,支持通配符号

        -newer              # 查找更改时间比指定文件新的文件

        -nogroup             # 查找的文件所属的组在/etc/groups中不存在  

        -nouser            # 查找文件的数组在/etc/passwd中不存在

        -path pattern         # 指定路径样式,配合-prune排除指定目录

        -perm            # 按文件权限来查找文件

        -size n[cwbkMG]        # 按照文件大小为n来查找,后面接计量单位

        -user             # 按文件属主来查找文件

        -type             # 按文件类型查找文件  b,c,d,p,l,f,s,D

        

      actions:

        -delete            # 将找出的文件删除

        -exec             # 将查找出的文件交给改参数后面的shell命令运行

        -ok              # 与-exec用法相同,但是会进行提示

        -prune             # 不在当前指定的目录进行查找

        -print               # 默认功能可以省略,将匹配文件输出到标准输出

        !                # 取反

        -a              # 取交集,and

        -o               # 取并集,or

         

    find . -atime -2
    find /data/ -mtime -5
    find /var/log/ -mtime  +5 -name '*.log' 
    find . ! -type d
    find /data/ -perm 755
    find . -size +1000c
    find /data -path "/data/dir3" -prune -o -print   # -a和-o类似“&&”和“||”,为真时,执行-prune;为假时,执行-print
    find /data (-path /data/dir2 -o -path /data/dir3) -prune -o -print
    find . -nouser
    find . -group nobody
    find . -newer file1.txt     # 查找比file1更新的文件
    find . -maxdepth 1 -type d
    find . -maxdepth 1 -type d ! -name "."
    find . -maxdepth 1 -type d ! -name "." -o -name "xiaolizi"
    find . -maxdepth 1 -type d ! -name "." -a -name "xiaolizi"
    find . -type f -exec ls -l {} ;
    find . -type f -mtime +14 -exec rm {} ;
    find . -type f -mtime +14 -ok rm {} ;
    find . -type f -mtime +14 |xargs ls -l
    find . -name "*.txt" |xargs  -i mv {} dir2/
    find . -name "*.txt" |xargs  -i mv -t dir2/
    find . -type -f -name "test.txt"|xargs tar zcf xiaolizi.tar.gz # 不能使用-exec

    . rename

      通过字符串替换的方式批量修改文件名

      rename from to file...

      

      from: 需要替换或者需要处理的字符(文件名或者扩展名)

      to:  把from代表的内容替换为to代表的内容

      file:  待处理的文件,可以用“*”通配所有文件

    rename "_finished"   ""   *          #  将所有文件的_finished替换为空
    rename .jpg   .xiaolizi   *.jpg      #   将所有文件的.jpg替换为.xiaolizi

    . basename

      只显示去除绝对路径后的文件名

    . dirname

      只显示文件的目录名

    . chattr

      改变文件扩展属性

      a  # 只能向文件中添加数据,而不能删除,多用于服务器日志安全

      i   # 设定文件不能被删除,改名,写入或者新增内容, 给文件加锁+i 解锁-i

    . lsattr

      查看文件扩展属性

      

    . file

      显示文件类型

      file + filename

    . md5sum 

      用于计算和校验文件的MD5值,是一种不可逆的加密算法

      -b     # 二进制模式读取文件

      -c     # 从指定文件中读取md5校验值,并进行校验

      -t      # 文本模式读取文件,默认模式

      --quiet   # 校验文件使用的参数,验证通过不输出OK

      --status  # 校验文件使用参数,不输出任何信息,可以通过命令的返回值来判断

    md5sum xiaolizi.txt       # 加密文件
    md5sum xiaolizi.txt>md5.log  # 生成校验文件
    md5sum -c md5.log         # 检查文件完整性
    md5sum --status -c md5.log  # 使用"echo $?",来判断是否执行成功

    # 服务器备份脚本,使用md5校验数据完整性
      

    #!/bin/bash
    # Source function library
    ./etc/init.d/functions

    # Defined variables
    IP=$(ifconfig eth1|awk -F '[ :]+' 'NR==2{print $4}')
    Path="/data/backup/$IP"
    TIME=`/bin/date +%F`
    BackupFile=/server/scripts/backuplist

    # Judged the exostence of variables
    [ ! -d $Path ] && mkdir -p $Path
    [ ! -f $BackupFile ] && {
    echo "Please give me $BackupFile"
    exit 1
    }

    # Defined result function
    function Msg(){
    if [ $? -eq 0 ];then
    action "$*" /bin/true
    else
    action "$*" /bin/false
    fi
    }

    # Backuo config files
    tar zcfh $Path/conf_${TIME}.tar.gz `cat $BackupFile` &>/dev/null
    Msg 'Backup config files'

    # Make a flag for backup
    find $Path -type f -name "*${TIME}.tar.gz"|xargs md5sum >$Path/flag_${TIME} 2>/dev/null

    # 备份成功建立md5sum文件指纹库
    Msg 'Make a flag for backup'

    # Send backup to backupsever
    rsync -az $Path rsync_backup@rsync::backup --password-file=/etc/rsync.password &>/dev/null
    Msg 'Send backup to backup server'

    # 检查服务器备份情况,邮件通知管理员

    #!/bin/bash
    DIR=/data/backup
    TIME=`/bin/date + %F`
    log=/tmp/$TIME-check.log

    [ -d $DIR ] && {
    find $DIR -type f -name "flag_$TIME"|xargs md5sum -c >$log 2>/dev/null
    mail -s "$(date +%F_%T)backup check result" xxxxxx@qq.com <$log
    }

    # Delete backup a week ago
    find $Path -type f -name "*.tar.gz" -mtime +7|xargs rm -f &>/dev/null
    Msg 'Delete backup a week ago'

    . chown

      改变文件或目录的用户和用户组

           chown [OPTION]... [OWNER][:[GROUP]] FILE...

      被授权的用户,在操作系统中需要先存在

    chown oldboy file.txt # 属主会变化
    chown .odboy file.txt  # 属组会变化
    chown root:root file.txt # 同时更改文件所属用户和组属性
    或者
    chown root.root file.txt
    chown -R xiaolizi.xiaolizi file.txt # 递归授权

    . chmod

      改变文件或者目录权限,但是一般只有root用户或者文件的属组才可以使用

      chmod [OPTION]... MODE[,MODE]... FILE...

      权限位:

        r:读4  w:写2  x:执行1  -:无权限

      特殊权限位:

        t,T,s,S,X,x

      

      用户类型:

        所属用户:u  所属组用户:g  其他用户:o

      操作字符:

        +加入  -减去  =设置

    chmod a= file.txt # 所有权限为空
    chmod u+x file.txt
    chmod g+w file.txt
    chmod o+r file.txt
    chmod uf+r,o-r file.txt
    chmod u=rwx,g=rx,o=x file.txt
    chmod -R 644 /dir/  递归设置文件权限

    . umask

      用来定义用户创建文件或目录的默认权限

       1.创建文件最大权限为666,但是设置的umask码为022,所以文件权限变为644

        但是当文件权限值,减去,umask值,若是期中有数字是奇数,那这个奇数需要+1变成偶数

        

        2.创建目录默认最大权限是777,777-022=755,所以默认创建目录权限是755

        3.umask值是由/etc/profile文件中决定的61,69行,具体可以查看代码

  • 相关阅读:
    记一次 .NET 某智能服装智造系统 内存泄漏分析
    记一次 .NET 某化妆品 webapi 卡死分析
    记一次 .NET 某公交卡扣费系统 程序卡死分析
    去掉烦人的:要恢复页面吗?Chrome未正确关闭
    C#Excel转图片代码
    ArcEngine实现pagelayout中文本元素的属性对话框
    arcgis 模型版本问题最大
    Arcengine开发所遇错误解决方案(持续更新)
    ArcEngine IPageLayout 添加经纬网和公里网
    Arcengine的复制粘贴
  • 原文地址:https://www.cnblogs.com/flashfish/p/10716681.html
Copyright © 2011-2022 走看看