14-Linux_find及文本壓縮工具

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/dushansao/article/details/102515336

find命令和文本壓縮工具

在这里插入图片描述

find

  • find:在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

工作特點 :

1> 查找速度略慢

2> 精確查找

3> 實時查找

4> 可能只搜索用戶具備讀取和執行權限的目錄

选项 :

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;

-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;

-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;

-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位;以24小时计算;

-daystart:从本日开始计算时间;

-depth:从指定目录下最深层的子目录开始查找;

-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;

-exec<执行指令>:假设find指令的回传值为True,就执行该指令;

-false:将find指令的回传值皆设为False;

-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;

-follow:排除符号连接;

-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;

-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;

-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;

-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;

-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;

-group<群组名称>:查找符合指定之群组名称的文件或目录;

-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;

-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;

-inum<inode编号>:查找符合指定的inode编号的文件或目录;

-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;

-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;

-links<连接数目>:查找符合指定的硬连接数目的文件或目录;

-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;

-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;

-maxdepth<目录层级>:设置最大目录层级;

-mindepth<目录层级>:设置最小目录层级;

-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mount:此参数的效果和指定“-xdev”相同;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-nogroup:找出不属于本地主机群组识别码的文件或目录;

-noleaf:不去考虑目录至少需拥有两个硬连接存在;

-nouser:找出不属于本地主机用户识别码的文件或目录;

-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;

-path<范本样式>:指定字符串作为寻找目录的范本样式;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;

-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;

-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;

-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;

-prune:不寻找字符串作为寻找文件或目录的范本样式;

-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-size<文件大小>:查找符合指定的文件大小的文件;

-true:将find指令的回传值皆设为True;

-type<文件类型>:只寻找符合指定的文件类型的文件;

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;

-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;

-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;

-version或——version:显示版本信息;

-xdev:将范围局限在先行的文件系统中;

-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

示例 :

find /etc/ -name passwd  
查找/etc/下名称中带有passwd的文件

find /etc -maxdepth 1 -name passwd    
查找/etc/下名称中带有passwd的文件,查找一层。

find /etc -name *.conf      
查找/etc/下名称中带有*.conf的文件(下面显示的是部分)

find /etc -maxdepth 2 -name *.conf  
查找/etc/下名称中带有*.conf的文件,且查找两层,包括一层(下面显示的是部分)

find /etc -maxdepth 2 -mindepth 2 -name *.conf  
查找/etc/下名称中带有*.conf的文件,且只查找第二层

find /mnt -group tony    
查找/mnt中所有组是tony用户的文件

find /mnt -user student -group student  
查找/mnt中所有人和所有组都是student的文件

find /mnt -not -user student   
查找/mnt中所有人不是student用户的文件

find /mnt -not -user student -o -group tony   
查找/mnt中所有人不是student用户或者所有组是tony用户的文件

find /mnt -size 20K   
查找/mnt文件大小近似20k的文件

find /mnt -size +20K   
查找/mnt文件大小大于20k的文件

find /mnt -size -20K   
查找/mnt文件大小小于20k的文件

find /mnt -type d     
按type查找/mnt中目录

find /mnt -type f     
按type查找/mnt中文件

find /mnt -cmin 10    
查找/mnt中十分钟左右修改的

find /mnt -cmin +10     
查找/mnt中十分钟以上修改的

find /mnt -cmin -10    
查找/mnt中十分钟以内修改的

find /mnt -ctime 10    
查找/mnt中十天左右修改的

find /mnt -ctime +10    
查找/mnt中十天以上修改的

find /mnt -ctime -10   
查找/mnt中十天以内修改的

find /mnt/ -perm 444    
查找/mnt文件权限为444的文件

find /mnt/ -perm -444    
查找/mnt中user有读的权限且group有读的权限且other有读的权限的文件。(三个条件,u.g.o至少要读的权限即r--r--r--)

find /mnt/ -perm -004   
查找/mnt中other有读权限的文件(一个条件,o至少有读的权限)

find /mnt/ -perm -644    
查找/mnt中user有读写的权限且group至少有读权限且other有读的权限的文件。(四个条件,rw-r--r--)

find /etc/ -name *.conf -exec cp -rp {} /mnt \;   
把/etc/目录下名称中带有.conf的文件递归复制到/mnt下

find /mnt -name "*.conf" -exec rm -fr {} \; 
删除/mnt名称中带有.conf的文件

find / -group mail -exec cp -rp {} /mnt \; 
把/目录下的组属于mail的文件复制到/mnt



找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
find /tmp \( -not -user root -a -not -name 'f*' \) -ls
find /tmp -not \( -user root -o -name 'f*' \) -ls

查找/etc/下,除/etc/sane.d目錄的其他所有.conf後綴的文件
find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf"

查找/etc/下,除/etc/sane.d和/etc/fonts兩個目錄的所有.conf後綴的文件
find /etc \( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf"

備份配置文件,添加.orig這個擴展名
find -name ".conf" -exec cp {} {}.orig \

提示刪除存在時間超過3天以上的joe的臨時文件
find /tmp -ctime +3 -user joe -ok rm {} \

在主目錄中尋找可被其他用戶寫入的文件
find ~ -perm -002 -exec chmod o-w {} \

查找/data下的權限為644,後綴為sh的普通文件,增加執行權限
find /data -type f -perm 644 -name ".sh" -exec chmod 755 {} \

查看/home的目錄
find /home -type d -ls

compress

  • compress :使用“Lempress-Ziv”编码压缩数据文件。compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出".Z"的扩展名。当要解压缩时,可执行uncompress指令。事实上uncompress是指向compress的符号连接,因此不论是压缩或解压缩,都可通过compress指令单独完成。

选项 :

-f:不提示用户,强制覆盖掉目标文件;

-c:将结果送到标准输出,无文件被改变;

-r:递归的操作方式;

-b<压缩效率>:压缩效率是一个介于9~16的数值,预设值为"16",指定愈大的数值,压缩效率就愈高;

-d:对文件进行解压缩而非压缩;

-v:显示指令执行过程;

uncompress

  • uncompress:用来解压缩由compress命令压缩后产生的“.Z”压缩包。

zcat

  • zcat :用于不真正解压缩文件,就能显示压缩包中文件的内容的场合.

选项 :

-S:指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项;

-c:将文件内容写到标注输出;

-d:执行解压缩操作;

-l:显示压缩包中文件的列表;

-L:显示软件许可信息;

-q:禁用警告信息;

-r:在目录上执行递归操作;

-t:测试压缩文件的完整性;

-V:显示指令的版本信息;

-l:更快的压缩速度;

-9:更高的压缩比。

示例 :

zcat file.Z 不顯示解壓縮的前提下查看文本文件内容

zcat file.Z > file

gzip

  • gzip :用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

常用選項 :

-d:解壓縮,相當於gunzip

-c:結果輸出至標準輸出,保留原文件不改變

-#:指定壓縮比,#取值為1-9,值越大壓縮比越大

gunzip

  • gunzip :用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

示例 :

zcat file.gz 不顯示解壓縮的前提下查看文本文件内容

gzip -c messages > messages.gz

gzip -c -d messages.gz > messages

zcat messages.gz > messages

cat messages | gzip > m.gz

bzip2

  • bzip2 :用于创建和管理(包括解压缩)“.bz2”格式的压缩包。

常用選項 :

-k:keep,保留原文件

-d:解壓縮

-#:1-9,壓縮比,默認為9

bunzip2

  • bunzip2 :解压缩由bzip2指令创建的”.bz2"压缩包。对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现。

常用選項 :

-f或--force:解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件;

-k或——keep:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数;

bunzip2 file.bz2解壓縮

bzcat

  • bzcat :解压缩指定的.bz2文件,并显示解压缩后的文件内容。保留原压缩文件,并且不生成解压缩后的文件。

    bzcat file.bz2 不顯示解壓縮的前提下查看文本文件内容


xz/unxz/xzcat

xz:

常用選項 :

-k:keep,保留原文件

-d:解壓縮

-#:1-9,壓縮比,取值1-9,默認為6

unxz file.xz 解壓縮

xzcat file.xz 不顯示解壓縮的前提下查看文本文件内容

tar

  • tar :可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件.

    打包和压缩:打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

常用选项 :

-c或--create:建立新的备份文件;

-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

-d:记录文件的差别;

-x或--extract或--get:从备份文件中还原文件;

-t或--list:列出备份文件的内容;

-z或--gzip或--ungzip:通过gzip指令处理备份文件;

-Z或--compress或--uncompress:通过compress指令处理备份文件;

-f<备份文件>或--file=<备份文件>:指定备份文件;

-v或--verbose:显示指令执行过程;

-r:添加文件到已经压缩的文件;

-k:保留原有文件不覆盖;

-m:保留文件不被覆盖;

-p或--same-permissions:用原来的文件权限还原文件;

-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;

示例 :

創建歸檔,保留權限
tar -cpvf /PATH/FILE.tar FILE...

追加文件至歸檔;不支持對壓縮文件追加
tar -r-f /PATH/FILE.tar FILE...

查看歸檔文件中的文件列表
tar -t-f /PATH/FILE.tar

展開歸檔
tar -x -f /PATH/FILE.tar
tar -x -f /PATH/FILE.tar -C /PATH/

結合壓縮工具實現:歸檔並壓縮   -j:bzip2,-z:gzip,-J:xz
--exclude 排除文件
tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app

-T 選項指定輸出文件 -X 選項指定包括要排除的文件列表
tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist

split

  • split顾名思义,讲一个大文件依据文件大小或行数切割成为小文件.

常用選項

-b : 后面可接欲切割文件的大小,可加单位,例如b,k,m等

-l : 以行数来进行切割

-C:每一输出档中,单行的最大 byte 数。

-d:使用数字作为后缀。

PREFIX : 代表前导符,可作为切割文件的前导文字

示例

生成一个大小为100KB的测试文件

[root@localhost split]# dd if=/dev/zero bs=100k count=1 of=date.file

1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s

使用split命令将上面创建的date.file文件分割成大小为10KB的小文件

[root@localhost split]# split -b 10k date.file 

[root@localhost split]# ls
date.file  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj

分割大的tar文件為多份小文件 :

split -b Size -d tar-file-name prefix-name
split -b 1M -d mybackup.tgz mybackup-parts
split -b 1M mybackup.tgz mybackup-parts

**合并** :
cat mybackup-parts* > mybackup-tar.gz

cpio

  • cpio :主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。

    cpio [選項] > 文件名或者設備名

    cpio [選項] < 文件名或者設備名

常用選項 :

-o:output模式,打包,將標準輸入傳入的文件名打包后發送到標準輸入

-i:input模式,解包,對標準輸入傳入的打包文件名解包到當前目錄

-t:預覽,查看標準輸入傳入的打包文件中包含的文件列表

-O filename:輸出到指定的歸檔文件名

-A:向已存在的歸檔文件中追加文件

-I filename:對指定的歸檔文件名解壓

-F filename:使用指定的文件名替代標準輸入或輸出

-d:解包生成目錄,在cpio還原時,自動的建立目錄

-v:顯示打包過程中的文件名稱

示例 :

將etc目錄備份:
find ./etc -print | cpio -ov > bak.cpio

將/data内容追加bak.cpio
find /data | cpio -oA -F bak.cpio

内容預覽
cpio -tv < etc.cpio

解包文件
cpio -idv < etc.cpio

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dushansao/article/details/102515336