私人装修接单网站,wordpress 重新初始化,网站建设目的与意义,oa办公系统是什么意思目录 文件查找与打包压缩1文件查找1.1 locate1.2 find1.2.1 指定搜索目录层级1.2.2对每个目录先处理目录内的文件#xff0c;再处理目录本身1.2.3根据文件名和inode查找1.2.4 根据属主、属组查找1.2.5根据文件类型查找1.2.6空文件或目录1.2.7组合条件1.2.8 排除日录1.2.9根据文… 目录 文件查找与打包压缩1文件查找1.1 locate1.2 find1.2.1 指定搜索目录层级1.2.2对每个目录先处理目录内的文件再处理目录本身1.2.3根据文件名和inode查找1.2.4 根据属主、属组查找1.2.5根据文件类型查找1.2.6空文件或目录1.2.7组合条件1.2.8 排除日录1.2.9根据文件大小来查找1.2.10根据时间戳1.2.11 根据权限查找1.2.12 处理动作 1.3参数换xargs 2压缩和解压缩2.1 compress和uncompress2.2 gzip和gunzip2.3 bzip2和bunzip22.4 xz和unxz2.5 zip和unzip 3打包和解包3.1tar3.2split3.3cpio 文件查找与打包压缩
1文件查找
在文件系统上查找符合条件的文件 文件查找: locate, find 非实时查找(数据库查找): locate 实时查找: find
1.1 locate
locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务)执行updatedb可以更新数据库 索引构建过程需要遍历整个根文件系统很消耗资源
工作特点:
查找速度快 模糊查找 非实时查找 搜索的是文件的全路径不仅仅是文件名 可能只搜索用户具备读取和执行权限的目录
格式 locate [OPTION]...[PATTERN].常用选项
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r 使用基本正则表达式例
locate -n 3 -r \.sh$ 使用正则表达式找到前三个以.sh结尾的文件
/boot/grub2/i386-pc/modinfo.sh
/data/scripts/BMI_cal.sh
/data/scripts/CHOOK_RABBIT.sh1.2 find
find 是实时查找工具通过遍历指定路径完成文件查找
工作特点:
查找速度略慢 精确查找 实时查找 查找条件丰富 可能只搜索用户具备读取和执行权限的目录
条式:
find [OPTION]... [查找路径] [查找条件] [处理动作]查找路径: 指定具体目标路径默认为当前目录 查找条件: 指定的查找标准可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件 处理动作: 对符合条件的文件做操作默认输出至屏幕
1.2.1 指定搜索目录层级
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度例
find /data -maxdepth 2 查找/data下的1级和2级目录data本身不算1级
/data
/data/.passwd.swp
/data/.passwd.swo
/data/.passwd.swn1.2.2对每个目录先处理目录内的文件再处理目录本身
-depth 或 -d例
find /data
/data 目录
/data/.passwd.swp 文件
/data/.passwd.swo 文件
/data/.passwd.swn 文件find /data -depth
/data/.passwd.swp 文件
/data/.passwd.swo 文件
/data/scripts/BMI_cal.sh 目录
/data/scripts/work_menu.sh 目录
/data/scripts/show_sys_info.sh1.2.3根据文件名和inode查找
-name 文件名称 支持使用glob如 * ? [] [^]通配符要加
-iname 文件名称 不区分字母大小写
-inum n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regexATTERN 以PATTERN匹配整个文件路径而非文件名称例
find /etc -name *passwd* 通配符要加
/etc/pam.d/passwd
/etc/security/opasswd
/etc/passwd-#find / -inum 333 -ls 显示节点编号为333的文件与目录-ls显示详细属性333 0 dr-xr-xr-x 9 root root 0 Jul 25 15:11 /proc/98333 0 drwxr-xr-x 2 root root 0 Jul 27 22:14 /sys/devices/system/memory/memory15/power1.2.4 根据属主、属组查找
-user USERNAME 查找属主为指定用户(UID)的文件
-group GRPNAME 查找属组为指定组GID)的文件
-uid UserlD 查找属主为指定的UID号的文件
-gid GrouplD 查找属组为指定的GID号的文件
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件1.2.5根据文件类型查找
-type TYPETYPE可以是以下形式
f: 普通文件
d: 目录文件
l: 符号链接文件
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件例
find /data -type d -ls128 0 drwxr-xr-x 3 root root 225 Jul 26 12:37 /data138 0 drwxr-xr-x 2 root root 212 Jul 27 17:07 /data/scripts1.2.6空文件或目录
-empty例
find /etc -empty -ls1.2.7组合条件
与 -a
或 -o
非 -not !例
#find /etc/ -type d -o -type l |wc -l
665
#find /etc/ -type d -o -type l -ls|wc -l #此时相当于-type l 与-ls中间加了个-a而-a优先级高于-o只显示这两个之间的文件
260
#find /etc/ \( -type d -o -type l \) -ls|wc -l 可以加上\(\)解决
665德·摩根定律
(非A) 或 (非B) 非(A且B) (非A) 且 (非B) 非(A或B)
示例:
!A -a !B !(A -o B)
!A -o !B !(A -a B)例
#find ! -user joyce -a ! -user root
./mysql/mysql-community-client-8.0.32-1.el8.x86_64.rpm
./mysql/mysql-community-client-debuginfo-8.0.32-1.el8.x86_64.rpm
./mysql/mysql-community-client-plugins-8.0.32-1.el8.x86_64.rpm
等价于
#find ! \( -user joyce -o -user root \)
./mysql/mysql-community-client-8.0.32-1.el8.x86_64.rpm
./mysql/mysql-community-client-debuginfo-8.0.32-1.el8.x86_64.rpm
./mysql/mysql-community-client-plugins-8.0.32-1.el8.x86_64.rpm#find / \( -not -user root -a -not -name f* \) -ls 查找属主不是root且名不是f开头的文件
#find / -not \( -user root -o -name f* \) -ls 等价1.2.8 排除日录
-path dir -a -prune例 查找/下所有名字以.conf结尾的文件但不查找/usr和/etc目录
#find / \( -path /usr -o -path /etc \) -a -prune -o -name *.conf
/boot/loader/entries/34f09f8df29847998143d560b2af24fb-4.18.0-348.el8.x86_64.conf
/boot/loader/entries/34f09f8df29847998143d560b2af24fb-0-rescue.conf
/run/NetworkManager/resolv.conf1.2.9根据文件大小来查找
-size [|-] #UNIT常用单位: kMGc (byte) 注意大小写敏感
#UNIT (#-1#]如 6k 表示(5k,6k]
-#UNIT [0,#-1]如 -6k 表示[0,5k]
#UNIT (#,8)如 6k 表示(6k,∞)例
#find / -size 10M 查找9M-10M的文件
/var/cache/dnf/epel-updateinfo.solvx
/usr/lib/firmware/qcom/sdm845/adsp.mbn
/usr/lib/modules/4.18.0-348.el8.x86_64/vmlinuz
/usr/share/fonts/google-noto-emoji/NotoColorEmoji.ttf1.2.10根据时间戳
以“天”为单位
-atime[|-]# 读时间# [#,#1)# [#1,∞]-# [O,#)
-mtime 修改时间
-ctime 属性修改时间以“分钟”为单位
-amin
-mmin
-cmin1.2.11 根据权限查找
-perm [/或-]MODEMODE 精确权限匹配必须是MODE才行
/MODE 任何一类(u,g,o)对象的权限中只要能一位匹配即可或关系 从CentOs 7开始淘汰
-MODE 每一类对象都必须同时拥有指定权限与关系
0 表示不关注说明:
find -perm 755 会匹配权限模式恰好是755的文件 只要当任意人有写权限时find -perm /222就会匹配 只有当每个人都有写权限时find -perm -222才会匹配 只有当其它人 (other) 有写权限时find -perm -002才会匹配
例
#find /data/ -perm -444 -ls| head -5 权限三个都得有读权限128 0 drwxr-xr-x 3 root root 225 Jul 26 12:37 /data/132 12 -rw-r--r-- 1 root root 12288 Jul 7 20:41 /data/.passwd.swp136 4 -rw-r--r-- 1 root root 2640 Jul 8 16:58 /data/passwd
#find /data/ -perm /444 -ls| head -5 权限任意一个有4即可128 0 drwxr-xr-x 3 root root 225 Jul 26 12:37 /data/132 12 -rw-r--r-- 1 root root 12288 Jul 7 20:41 /data/.passwd.swp135 4 --w-r--r-- 1 root root 51 Jul 8 10:46 /data/issue.bak
#find /data/ -perm /044 -ls| head -5 权限后两个任意一个有4即可128 0 drwxr-xr-x 3 root root 225 Jul 26 12:37 /data/132 12 -rw-r--r-- 1 root root 12288 Jul 7 20:41 /data/.passwd.swp135 4 --w-r--r-- 1 root root 51 Jul 8 10:46 /data/issue.bak[rootCentOS8 ~]#find /data/ -perm -002 查找other里带有写权限的和下面等价
[rootCentOS8 ~]#find /data/ -perm /0021.2.12 处理动作
-print 默认的处理动作显示至屏幕不加也默认执行了这个隐藏动作
-ls 类似于对查找到的文件执行“s -I命令
-fls file 查找到的所有文件的长格式信息保存至指定文件中相当于ls file
-delete 删除查找到的文件并不交互慎用
-ok CMD {}\; 对查找到的每个文件执行由COMMAND指定的命令对于每个文件执行命令之前都会交与式要求用户确认
-exec CMD {}\; 对查找到的每个文件执行由COMMAND指定的命令
{} 用于引用查找到的文件名称自身例
#ls
f1.txt f2.txt f3.txt issue.bak
#find /data/ -name f* -ok rm {} \; find查找/data/下以f开头的文件并删除{}代表前面find找到的文件-ok开始标志\;表示结束标志rm ... /data/f1.txt ? yrm ... /data/f2.txt ? y 使用-exec不适应-ok则不交互直接执行 rm ... /data/f3.txt ?
#ls
f3.txt issue.bak1.3参数换xargs
xargs CMD 参数例
#find -name *.txt|xargs ls -Sl 将当前目录下找到的*.txt文件传递给ls作为参数以排序。注意ls不支持标准输入无法使用管道传输
-rw-r--r-- 1 root root 15 Jul 28 00:19 ./f1.txt
-rw-r--r-- 1 root root 15 Jul 26 12:37 ./nianling.txt
-rw-r--r--. 1 root root 12 Jul 23 20:34 ./f3.txt
-rw-r--r-- 1 root root 0 Jul 28 00:19 ./f2.txt#echo {1..10}
1 2 3 4 5 6 7 8 9 10
#echo {1..10}|xargs -n1
1
2
3
4
5
6
7
8
9
10
#echo {1..10}|xargs -n4
1 2 3 4
5 6 7 8
9 10#seq 10
1
2
3
4
5
6
7
8
9
10
#seq 10|xargs
1 2 3 4 5 6 7 8 9 10#echo user{1..5}|xargs -n1 useradd 批量创建账号注意使用-n1将参数分成一行一行因为useradd一次只能接受一个参数
#echo user{1..5}|xargs -n1 userdel -r 批量删除账号当文件名为a b 或 c d时xargs默认以空格 作为文件名分隔符此时会出现找不到文件a文件b文件c文件d的问题 #find -print0 | xargs -0 rm 使用0(nul)作为分隔符这样rm时不会出现问题
2压缩和解压缩
2.1 compress和uncompress
这两个工具来源于ncompress包需要事先yum
格式
compress options [file ...]
uncompress file.Z 解压缩常用选项
-d 解压缩相当于uncompress
-c 结果输出至标准输出不删除原文件
-v 显示详情例
#compress -c file.txt f.txt.Z 压缩file.txt至f.txt.Z但保留原文件
#compress -dc f.txt.Z f2.txt 解压缩f.txt.Z到f2.txtzcat file.z 不显式解压缩的前提下查看文本文件内容也可以重定向到文件中即解压缩
2.2 gzip和gunzip
格式:
gzip [OPTION]... FILE
gunzip FILE常用选项:
-k keep保留原文件C8上才有
-d 解压缩相当于gunzip
-c 结果输出至标准输出保留原文件不改变
-# 指定压缩比#取值为1-9值越大压缩比越大例
#cat f4 | gzip f4.gz 支持管道2.3 bzip2和bunzip2
来自于bzip2包
格式
bzip2 [OPTION]... FILE...
bunzip2 FILE常用选项
-k keep保留原文件
-d 解压缩
-c 结果输出至标准输出保留原文件不改变
-# 压缩比取值1-9默认为9也可以预览不过使用bzcat file而不是zcat
2.4 xz和unxz
来自于xz包
格式:
xz [OPTION]... FILE...
unxz FILE常用选项
-k keep保留原文件
-d 解压缩
-c 结果输出至标准输出保留原文件不改变
-# 压缩比取值1-9默认为6也可以预览不过使用xzcat file而不是zcat或bxzcat
2.5 zip和unzip
zip 可以实现打包目录和多个文件并压缩成一个文件但可能会丢失文件属性信息如所有者和组信息一般建议使用 tar 代替
zip [OPTION]... FILE_back_up FILE
unzip 默认解包结果输出到屏幕显示可以使用-p重定向到文件选项
-r 对目录进行打包
-d dir 将文件解包到dir下
-p 管道默认打包会包括目录本身如果只想打包其中的文件需要先进入目录中再进行打包
例
#cat /var/log/messages | zip message - -表示接收前面的标准输出adding: - (deflated 86%)
#ls
message.zip总结
压缩比xz bz2 gz zip compresszip可以压缩目录其他都只能压缩文件且单个文件压缩成单个文件
3打包和解包
3.1tar
tar 即 Tape ARchive磁带归档可以对目录和多个文件打包成一个且可以压缩并且保留文件属性不丢失常用于备份推荐使用
格式
tar [OPTION]... FILE_backup FILEc 打包
t 预览
x 解包 不需要加zjJ通用但系统上必须事先有安装其他命令
v 显示详细信息过程
f 后跟要处理的文件
p 保留权限不加也可以保留
-C 解压到指定位置
z 压缩成gz格式间接调用gz命令系统上必须事先有安装
j 压缩成bz2格式同理
J 压缩成xz格式同理
--excludeFILE 排除文件
-T FILE 指定要打包的文件
-x FILE 指定要排除的文件注意tar无法备份ACL权限的文件
默认打包会包括目录本身如果只想打包其中的文件需要先进入目录中再进行打包
(1) 创建归档保留权限
tar -cpvf /PATH/FILE.tar FILE...(2) 追加文件至归档: 注: 不支持对压缩文件追加
tar -rf /PATH/FILE.tar FILE...(3)查看归档文件中的文件列表
tar -t -f /PATH/FILE.tar(4展开文档
tar xf /PATH/FILE.tar
tar xf /PATH/FILE.tar -C /PATH(5) 结合压缩工具实现: 归档并压缩
z 压缩成gz格式间接调用gz命令系统上必须事先有安装
j 压缩成bz2格式同理
J 压缩成xz格式同理例
#tar c /var | tar x -C /data/ 相当于cp将/var目录复制到/data/下但速度更快3.2split
split命令可以分割一个文件为多个
-b 指定分割大小
-d 指定文件后缀为数字00 01 ...例
#split -b 1K shopping-table.sql /data/shopping-table
#ll /data -h
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableaa
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableab
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableac
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tablead
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableae
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableaf
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableag
-rw-r--r-- 1 root root 1.0K Jul 28 14:41 shopping-tableah
-rw-r--r-- 1 root root 1002 Jul 28 14:41 shopping-tableai#cat /data/shopping-table00* /data 合并为一个3.3cpio cpio 是历史悠久的打包和解包工具不过目前也已较少使用 cpio 命令是通过重定向的方式将文件进行打包备份还原恢复的工具它可以解压以“.cpio或者“.tar”结尾的文件
格式:
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