2023年8月3日发(作者:)

linux⽂件查找和打包压缩⽬录locate,⾮实时查找(也叫数据库查找)locate会查询系统上的⽂件索引数据库/var/lib/mlocate/⽂件索引数据库在系统空闲的时候⾃动创建更新,也可⼿动执⾏updatedb命令更新,centos7默认不带updatedb命令,需要安装(yuminstall -y mlocate)索引构建的过程中很消耗系统资源,需要遍历整个⽂件系统。不建议在⽣产中使⽤,或者在服务器不忙的时候创建locate⼯作特点查找速度快(基于⽂件索引数据库)模糊查找⾮实时查找搜索的是⽂件的全路径,不仅仅是⽂件名可能只能搜索到⽤户具读取或执⾏权限的⽬录locate常⽤选项-i 不区分⼤⼩写搜索-n N 只列出前边N个搜索到的项⽬-r 使⽤基本正则表达式 更新创建⽂件索引数据库[root@Centos7 ~]# updatedb 查找路径或⽂件名中包含lidawei的⽂件[root@Centos7 ~]# locate -i lidawei 显⽰查找结果的前三个[root@Centos7 ~]# locate -n 3 -i lidawei 根据正则表达式查找[root@Centos7 /]# locate -r "<$"find 实时查找⼯具,通过遍历路径完成⽂件查找⼯作特点相⽐于locate,查找速度较慢精确查找实时查找查找条件丰富可能只搜索出⽤户具有读取和执⾏权限的⽬录格式find [查找路径] [查找条件] [处理动作]指定搜索⽬录层级find /etc/ -maxdepth 2 # 搜索最⼤⽬录层级2find /etc/ -mindepth 2 # 搜索最⼩⽬录层级2find /etc/ -mindepth 2 -maxdepth 2 # ⽬录层级指定2对搜索出来的结果,优先显⽰⽬录中的⽂件,其次是⽬录find /data -depth 根据⽂件名和inode号查找find /etc/ -name "" # 查找/etc下名字是的⽂件find /etc/ -iname "" # 跟据名字查找,不区分⼤⼩写find /etc/ -inum 723799 # 查找inode号为723799的⽂件find / -samefile # 查找和相同inode号的⽂件find /etc/ -links 5 # 查找链接数是5的⽂件find /etc/ -regex ".*$" # 使⽤正则表达式匹配。只能匹配整个⽂件路径,不能单独匹配⽂件名根据属主,属组查找⽂件-user USERNAME # 查找属主为指定⽤户(UID)的⽂件-group GRPNAME # 查找属组为指定组(GID)的⽂件-uid UserID # 查找属主为指定的UID号的⽂件-gid GroupID # 查找属组为指定的GID号的⽂件-nouser # 查找没有属主的⽂件-nogroup # 查找没有属组的⽂件根据⽂件类型查找-type TYPETYPE可以是以下形式:f: 普通⽂件d: ⽬录⽂件l: 符号链接⽂件s:套接字⽂件b: 块设备⽂件c: 字符设备⽂件p: 管道⽂件查找空⽂件或⽬录find /etc/ -empty # 查看/etc下的空⽂件和空⽬录组合条件查询与:-a或:-o⾮:-not !find /etc -type d -a -empty # 查看/etc/下的空⽬录find /etc/ -type d -o -type l # 查看/etc/下⽬录或链接⽂件find /etc -not ( -type d -a -empty ) # 查看/etc/下的⾮空⽬录 排除⽬录find /etc/ -path "/etc/security" -a -prune -o -name "*.conf" # 查找/etc/下除了/etc/security⽬录外所有的.conf结尾的⽂件排除多个⽬录find /etc/ ( -path "/etc/security" -o -path "/etc/systemd" ) -a -prune -o -name "*.conf"根据⽂件⼤⼩查找-size [+|-]#UNIT #常⽤单位:k, M, G,c(byte),注意⼤⼩写敏感#UNIT: #表⽰(#-1, #],如:6k 表⽰(5k,6k]-#UNIT #表⽰[0,#-1],如:-6k 表⽰[0,5k]+#UNIT #表⽰(#,∞),如:+6k 表⽰(6k,∞)

find -size 1000M # 查找当前⽬录下999M以上到1000M的⽂件find -size -1000M # 所有⼩于1000M的⽂件find -size +1000M # 所有⼤于1000M的⽂件

根据时间查找,linux中的⽂件有三种时间atime 访问时间,⽂件被访问的最后时间mtime 修改时间,⽂件内容被修改的最后时间ctime 变化时间,⽂件的元数据发⽣变化的时间,如权限,所属⽤户等find /etc/ -atime 10 # 查看访问时间10-11天find /etc/ -mtime +10 # 查看10天以外find /etc/ -mtime -10 # 查看10天以内-amin # 访问时间,以分钟为单位-mmin-cmin 根据权限查找-perm [/|-MODE]MODE # 精确权限匹配/MODE # 任何⼀类对象的权限只要能和MODE匹配以为即可,或关系-MODE # 每⼀类对象必须同事拥有指定权限,与关系find /etc/ -perm 600 # 查看权限指定是600的⽂件find /etc/ -perm /600 # 权限或,能匹配到400,600,222,666等等find /etc/ -perm -600 # 权限与,能匹配到600,666,622,644等等 处理动作-print:默认的处理动作,显⽰⾄屏幕-ls:类似于对查找到的⽂件执⾏"ls -dils"命令格式输出find /etc/ -name "*.conf" -ls-fls file:查找到的所有⽂件的长格式信息保存⾄指定⽂件中find /etc/ -name "*.conf" -fls

-delete:删除查找到的⽂件,慎⽤!-ok COMMAND {} ; 对查找到的每个⽂件执⾏由COMMAND指定的命令,对于每个⽂件执⾏命令之前,都会交互式要求⽤户确认-exec COMMAND {} ; 对查找到的每个⽂件执⾏由COMMAND指定的命令{}: ⽤于引⽤查找到的⽂件名称⾃⾝find /etc/ -name "*.conf" -exec cp {} /home/jiji ;参数替换xargs很多命令不⽀持使⽤管道传递参数,xargs可以读取stdin的参数,并且以空格符或回车符将stdin的数据分割成参数seq 10 | xargs # 显⽰10个数字seq 10 | xargs -n1 # 将10个数字分隔为10个参数ls | xargs rm # 删除当前⽬录下的⼤量⽂件echo user{1..10} | xargs -n1 useradd # 批量创建⽤户echo user{1..10} | xargs -n1 userdel -r # 批量删除⽤户find -type f -name "*.txt” -print0 | xargs -0 rm # 如果⽂件名中带空格,以字符nul分隔 find练习1、查找/var⽬录下属主为root,且属组为mail的所有⽂件2、查找/var⽬录下不属于root、lp、gdm的所有⽂件3、查找/var⽬录下最近⼀周内其内容修改过,同时属主不为root,也不是postfix的⽂件4、查找当前系统上没有属主或属组,且最近⼀个周内曾被访问过的⽂件5、查找/etc⽬录下⼤于1M且类型为普通⽂件的所有⽂件6、查找/etc⽬录下所有⽤户都没有写权限的⽂件7、查找/etc⽬录下⾄少有⼀类⽤户没有执⾏权限的⽂件8、查找/etc/init.d⽬录下,所有⽤户都有执⾏权限,且其它⽤户有写权限的⽂件

打包压缩压缩是对单个⽂件进⾏压缩,⽽⾮⽬录⼏种常⽤的压缩⼯具gzip和unzip,来⾃gzip包,压缩后⽂件后缀.gz-k keep, 保留原⽂件,CentOS 8 新特性-d 解压缩,相当于gunzip-c 结果输出⾄标准输出,保留原⽂件不改变-# 指定压缩⽐,#取值为1-9,值越⼤压缩⽐越⼤#解压缩gunzip #不显式解压缩的前提下查看⽂本⽂件内容zcat bzip2和bunzip2,来⾃bzip2包,压缩后⽂件后缀.bz2-k keep, 保留原⽂件-d 解压缩-c 结果输出⾄标准输出,保留原⽂件不改变-# 1-9,压缩⽐,默认为9bunzip2 2 解压缩bzcat 2 不显式解压缩的前提下查看⽂本⽂件内容 xz和unzx,来⾃xz包,压缩后⽂件后缀是.xz-k keep, 保留原⽂件-d 解压缩-c 结果输出⾄标准输出,保留原⽂件不改变-# 压缩⽐,取值1-9,默认为6unxz #解压缩xzcat #不显式解压缩的前提下查看⽂本⽂件内容zip和unzipzip命令可以实现打包⽬录和多个⽂件成⼀个⽂件并压缩,但可能会丢失⽂件属性信息,所以⼀般⽤tar⼯具代替#打包并压缩zip -r /backup/ /etc/sysconfig/#不包括⽬录本⾝,只打包⽬录内的⽂件和⼦⽬录cd /etc/sysconfig; zip -r /root/ *#默认解压缩⾄当前⽬录unzip /backup/#解压缩⾄指定⽬录,如果指定⽬录不存在,会在其⽗⽬录(必须事先存在)下⾃动⽣成unzip /backup/ -d /tmp/configcat /var/log/messages | zip messages -#-p 表⽰管道unzip -p > messagetartar可以将⽬录和多个⽂件打包成⼀个⽂件,并且可以配合压缩⼯具压缩,保留⽂件属性不丢失。常⽤于备份,tar对应的⽂件是.tar后缀1 创建归档,保留权限tar -cpvf /etc/2 追加⽂件⾄归档,但不⽀持对压缩⽂件的追加tar -rf test3 查看归档⽂件中的⽂件列表tar -t -f 4 展开归档tar xf -C /home5 结合压缩⼯具⼀起使⽤tar zcvf /etc/# 打包的时候排除某个⽬录tar zcvf /home/ --exclude=/etc/default /etc-z 相当于gzip压缩⼯具-j 相当于bzip2压缩⼯具-J 相当于xz压缩⼯具

2023年8月3日发(作者:)

linux⽂件查找和打包压缩⽬录locate,⾮实时查找(也叫数据库查找)locate会查询系统上的⽂件索引数据库/var/lib/mlocate/⽂件索引数据库在系统空闲的时候⾃动创建更新,也可⼿动执⾏updatedb命令更新,centos7默认不带updatedb命令,需要安装(yuminstall -y mlocate)索引构建的过程中很消耗系统资源,需要遍历整个⽂件系统。不建议在⽣产中使⽤,或者在服务器不忙的时候创建locate⼯作特点查找速度快(基于⽂件索引数据库)模糊查找⾮实时查找搜索的是⽂件的全路径,不仅仅是⽂件名可能只能搜索到⽤户具读取或执⾏权限的⽬录locate常⽤选项-i 不区分⼤⼩写搜索-n N 只列出前边N个搜索到的项⽬-r 使⽤基本正则表达式 更新创建⽂件索引数据库[root@Centos7 ~]# updatedb 查找路径或⽂件名中包含lidawei的⽂件[root@Centos7 ~]# locate -i lidawei 显⽰查找结果的前三个[root@Centos7 ~]# locate -n 3 -i lidawei 根据正则表达式查找[root@Centos7 /]# locate -r "<$"find 实时查找⼯具,通过遍历路径完成⽂件查找⼯作特点相⽐于locate,查找速度较慢精确查找实时查找查找条件丰富可能只搜索出⽤户具有读取和执⾏权限的⽬录格式find [查找路径] [查找条件] [处理动作]指定搜索⽬录层级find /etc/ -maxdepth 2 # 搜索最⼤⽬录层级2find /etc/ -mindepth 2 # 搜索最⼩⽬录层级2find /etc/ -mindepth 2 -maxdepth 2 # ⽬录层级指定2对搜索出来的结果,优先显⽰⽬录中的⽂件,其次是⽬录find /data -depth 根据⽂件名和inode号查找find /etc/ -name "" # 查找/etc下名字是的⽂件find /etc/ -iname "" # 跟据名字查找,不区分⼤⼩写find /etc/ -inum 723799 # 查找inode号为723799的⽂件find / -samefile # 查找和相同inode号的⽂件find /etc/ -links 5 # 查找链接数是5的⽂件find /etc/ -regex ".*$" # 使⽤正则表达式匹配。只能匹配整个⽂件路径,不能单独匹配⽂件名根据属主,属组查找⽂件-user USERNAME # 查找属主为指定⽤户(UID)的⽂件-group GRPNAME # 查找属组为指定组(GID)的⽂件-uid UserID # 查找属主为指定的UID号的⽂件-gid GroupID # 查找属组为指定的GID号的⽂件-nouser # 查找没有属主的⽂件-nogroup # 查找没有属组的⽂件根据⽂件类型查找-type TYPETYPE可以是以下形式:f: 普通⽂件d: ⽬录⽂件l: 符号链接⽂件s:套接字⽂件b: 块设备⽂件c: 字符设备⽂件p: 管道⽂件查找空⽂件或⽬录find /etc/ -empty # 查看/etc下的空⽂件和空⽬录组合条件查询与:-a或:-o⾮:-not !find /etc -type d -a -empty # 查看/etc/下的空⽬录find /etc/ -type d -o -type l # 查看/etc/下⽬录或链接⽂件find /etc -not ( -type d -a -empty ) # 查看/etc/下的⾮空⽬录 排除⽬录find /etc/ -path "/etc/security" -a -prune -o -name "*.conf" # 查找/etc/下除了/etc/security⽬录外所有的.conf结尾的⽂件排除多个⽬录find /etc/ ( -path "/etc/security" -o -path "/etc/systemd" ) -a -prune -o -name "*.conf"根据⽂件⼤⼩查找-size [+|-]#UNIT #常⽤单位:k, M, G,c(byte),注意⼤⼩写敏感#UNIT: #表⽰(#-1, #],如:6k 表⽰(5k,6k]-#UNIT #表⽰[0,#-1],如:-6k 表⽰[0,5k]+#UNIT #表⽰(#,∞),如:+6k 表⽰(6k,∞)

find -size 1000M # 查找当前⽬录下999M以上到1000M的⽂件find -size -1000M # 所有⼩于1000M的⽂件find -size +1000M # 所有⼤于1000M的⽂件

根据时间查找,linux中的⽂件有三种时间atime 访问时间,⽂件被访问的最后时间mtime 修改时间,⽂件内容被修改的最后时间ctime 变化时间,⽂件的元数据发⽣变化的时间,如权限,所属⽤户等find /etc/ -atime 10 # 查看访问时间10-11天find /etc/ -mtime +10 # 查看10天以外find /etc/ -mtime -10 # 查看10天以内-amin # 访问时间,以分钟为单位-mmin-cmin 根据权限查找-perm [/|-MODE]MODE # 精确权限匹配/MODE # 任何⼀类对象的权限只要能和MODE匹配以为即可,或关系-MODE # 每⼀类对象必须同事拥有指定权限,与关系find /etc/ -perm 600 # 查看权限指定是600的⽂件find /etc/ -perm /600 # 权限或,能匹配到400,600,222,666等等find /etc/ -perm -600 # 权限与,能匹配到600,666,622,644等等 处理动作-print:默认的处理动作,显⽰⾄屏幕-ls:类似于对查找到的⽂件执⾏"ls -dils"命令格式输出find /etc/ -name "*.conf" -ls-fls file:查找到的所有⽂件的长格式信息保存⾄指定⽂件中find /etc/ -name "*.conf" -fls

-delete:删除查找到的⽂件,慎⽤!-ok COMMAND {} ; 对查找到的每个⽂件执⾏由COMMAND指定的命令,对于每个⽂件执⾏命令之前,都会交互式要求⽤户确认-exec COMMAND {} ; 对查找到的每个⽂件执⾏由COMMAND指定的命令{}: ⽤于引⽤查找到的⽂件名称⾃⾝find /etc/ -name "*.conf" -exec cp {} /home/jiji ;参数替换xargs很多命令不⽀持使⽤管道传递参数,xargs可以读取stdin的参数,并且以空格符或回车符将stdin的数据分割成参数seq 10 | xargs # 显⽰10个数字seq 10 | xargs -n1 # 将10个数字分隔为10个参数ls | xargs rm # 删除当前⽬录下的⼤量⽂件echo user{1..10} | xargs -n1 useradd # 批量创建⽤户echo user{1..10} | xargs -n1 userdel -r # 批量删除⽤户find -type f -name "*.txt” -print0 | xargs -0 rm # 如果⽂件名中带空格,以字符nul分隔 find练习1、查找/var⽬录下属主为root,且属组为mail的所有⽂件2、查找/var⽬录下不属于root、lp、gdm的所有⽂件3、查找/var⽬录下最近⼀周内其内容修改过,同时属主不为root,也不是postfix的⽂件4、查找当前系统上没有属主或属组,且最近⼀个周内曾被访问过的⽂件5、查找/etc⽬录下⼤于1M且类型为普通⽂件的所有⽂件6、查找/etc⽬录下所有⽤户都没有写权限的⽂件7、查找/etc⽬录下⾄少有⼀类⽤户没有执⾏权限的⽂件8、查找/etc/init.d⽬录下,所有⽤户都有执⾏权限,且其它⽤户有写权限的⽂件

打包压缩压缩是对单个⽂件进⾏压缩,⽽⾮⽬录⼏种常⽤的压缩⼯具gzip和unzip,来⾃gzip包,压缩后⽂件后缀.gz-k keep, 保留原⽂件,CentOS 8 新特性-d 解压缩,相当于gunzip-c 结果输出⾄标准输出,保留原⽂件不改变-# 指定压缩⽐,#取值为1-9,值越⼤压缩⽐越⼤#解压缩gunzip #不显式解压缩的前提下查看⽂本⽂件内容zcat bzip2和bunzip2,来⾃bzip2包,压缩后⽂件后缀.bz2-k keep, 保留原⽂件-d 解压缩-c 结果输出⾄标准输出,保留原⽂件不改变-# 1-9,压缩⽐,默认为9bunzip2 2 解压缩bzcat 2 不显式解压缩的前提下查看⽂本⽂件内容 xz和unzx,来⾃xz包,压缩后⽂件后缀是.xz-k keep, 保留原⽂件-d 解压缩-c 结果输出⾄标准输出,保留原⽂件不改变-# 压缩⽐,取值1-9,默认为6unxz #解压缩xzcat #不显式解压缩的前提下查看⽂本⽂件内容zip和unzipzip命令可以实现打包⽬录和多个⽂件成⼀个⽂件并压缩,但可能会丢失⽂件属性信息,所以⼀般⽤tar⼯具代替#打包并压缩zip -r /backup/ /etc/sysconfig/#不包括⽬录本⾝,只打包⽬录内的⽂件和⼦⽬录cd /etc/sysconfig; zip -r /root/ *#默认解压缩⾄当前⽬录unzip /backup/#解压缩⾄指定⽬录,如果指定⽬录不存在,会在其⽗⽬录(必须事先存在)下⾃动⽣成unzip /backup/ -d /tmp/configcat /var/log/messages | zip messages -#-p 表⽰管道unzip -p > messagetartar可以将⽬录和多个⽂件打包成⼀个⽂件,并且可以配合压缩⼯具压缩,保留⽂件属性不丢失。常⽤于备份,tar对应的⽂件是.tar后缀1 创建归档,保留权限tar -cpvf /etc/2 追加⽂件⾄归档,但不⽀持对压缩⽂件的追加tar -rf test3 查看归档⽂件中的⽂件列表tar -t -f 4 展开归档tar xf -C /home5 结合压缩⼯具⼀起使⽤tar zcvf /etc/# 打包的时候排除某个⽬录tar zcvf /home/ --exclude=/etc/default /etc-z 相当于gzip压缩⼯具-j 相当于bzip2压缩⼯具-J 相当于xz压缩⼯具