文件查找和压缩——Linux基本命令(12)

1.文件查找

在文件系统上查找符合条件的文件:locate, find

非实时查找(数据库查找):locate

实时查找:find


2.locate

(1)功能特点

查询系统上预建的文件索引数据库

/var/lib/mlocate/mlocate.db

依赖于事先构建的索引

索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb)

索引构建过程需要遍历整个根文件系统,极消耗资源

工作特点:

查找速度快

模糊查找

非实时查找

搜索的是文件的全路径,不仅仅是文件名

可能只搜索用户具备读取和执行权限的目录

(2)功能命令

locate KEYWORD

例如:locate conf  搜索名称或路径中带有“conf”的文件

有用的选项

-i 不区分大小写的搜索

-n N 只列举前N个匹配项目

-r 支持正则

locate  -r‘\.conf$’

使用Regex来搜索以“.conf”结尾的文件

locate命令是非实时的,如果新添加一个文件,马上使用locate是无法查找出来的,需要使用updatedb 命令更新locate数据库/var/lib/mlocate/mlocate.db,然后就能查找出来了。


3.find

(1)功能特点

实时查找工具,通过遍历指定路径完成文件查找

工作特点:

查找速度略慢

精确查找

实时查找

可能只搜索用户具备读取和执行权限的目录

(2)语法

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径;默认为当前目录

查找条件:指定的查找标准,可以文件名、大小、类型、

权限等标准进行;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕

(3)查找条件

指搜索层级:

-maxdepth level  最大搜索深度

-minxdepth level  最小搜索深度

根据文件名和inode查找:

-name 基于名称的精确查找

-iname 基于名称忽略大小写的精确查找查找

-inum 基于inode查找

-samefile 基于相同inode号的查找(查找硬链接)

-links n 硬链接为n的文件

-regex 支持正则 默认为(emacs标准)

-regextype egrep -regex 支持egrep同标准的正则

根据属主、属组查找:

-user 用户名  基于文件owner的查找

-group 组名  基于文件group的查找

-uid userid   基于文件uid的查找

-gid groupid  基于文件gid的查找

-nouser  查找没有owner的文件

-nogroup 查找没有group的文件

根据文件类型查找:

-type 基于文件类型的查找

f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

组合条件:

与:-a

或:-o

非:-not, !

德·摩根定律:

(非 A) 或 (非 B) = 非(A 且 B)

(非 A) 且 (非 B) = 非(A 或 B)

(4)示例

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

找出/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"

find /etc \( -path ‘/etc/sane.d‘ -o -path‘/etc/fonts‘ \) -a -prune -o -name "*.conf"

(5)根据文件大小来查找

-size[+|-]#UNIT 根据文件大小来查找

常用单位:k, M, G,c(byte)

#UNIT:(#-1,#]

如:6k 表示(5k,6k]

-#UNIT:[0,#-1]

如:-6k 表示[0,5k]

+#UNIT:(#,∞)

如:+6k 表示(6k,∞)

(6)根据时间戳查找

以“天”为单位;

-atime[+|-]#,

#: [#,#+1)

+#: [#+1,∞]

-#: [0,#)

-mtime

-ctime

以“分钟”为单位:

-amin

-mmin

-cmin

(7)根据权限查找

-perm

mode 精确权限匹配

+mode[/mode]  任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,(+ 从centos7开始淘汰,centos7中只能用/mode)

-mode  每一类对象都必须同时拥有指定权限,与关系0表示不关注

例如:权限模式恰好是755的文件,find -perm 755才会匹配

只要当任意人有写权限时,find -perm +222就会匹配

只有当每个人都有写权限时,find -perm -222才会匹配

只有当其它人(other)有写权限时,find -perm -002才会匹配

(注意:如果某位数字为2,并不是说那个位只能有写权限,也可以是有读写权限的,也可以是读写执行权限都有的,总之就是必须包含写权限。)

(8)处理动作

-print 处理默认的动作,显示至屏幕

-delete 直接删除所查找到的文件,不询问。

-ls 长列出所查找到的文件

-fls file 将查找到的文件长列出导入到指定文件。

> file

-ok command {} \; 对查找到的文件当做下一命令的参数去执行(交互式要求用户确认)

-exec command {} \; 对查找到的文件当做下一命令的参数去执行(非交互式)

{}: 用于引用查找到的文件名称自身

(9)参数替换 xargs

由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了xargs命令。有些命令不能接受过多参数,命令执行可能会失败,xargs也可以解决。

find和xargs格式:find | xargs COMMAND

例如:find cr*.sh 可以找出cr开头.sh结尾的文件,但是要是想要长列出是不能直接使用find cr*.sh |ls -l  这个命令的,因此要使用find cr*.sh |xargs ls -l

(10)find示例

为了更好的理解和运用find功能,我们来举几个例子:

 

1.find -name “*.conf” -exec cp {} {}.orig \;

寻找当前目录下名字以.conf结尾的文件,复制到当前文件夹并将名字后面加上.orig

2.find /tmp -ctime +3 -user joe -ok rm {} \;

寻找/tmp文件夹下ctime为大于3天之前的且属主为joe的文件,将它们全部删除

3.find ~ -perm -002  -exec chmod o -w {} \;

寻找家目录下other拥有写权限的文件,将other减去写权限

4.find /data -type f -perm 644 -name “*.sh” -exec chmod 755 {} \;

寻找/data文件夹下文件类型为普通文件属主包括读写权限且属组和other都包括写权限的以.sh为结尾的文件,修改权限为755。

5.find /home -type d -ls

寻找/home目录下文件类型为目录文件并列出


4.压缩解压缩及归档工具

(1)compress (后缀名.Z)

-d 解压缩,相当于uncompress ,相当于zcat X.Z > X

-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。

(使用-c配合重定向可以实现不删除原文件的情况下实现压缩并可以自由命名)

-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.

-v 显示详细过程。

(2)gzip (后缀名.gz)

-d 解压缩,相当于gunzip,相当于zcat X.gz > X

-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。

-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.

-v 显示详细过程。

-# 数字越大,压缩比越高,速度越慢,文件越小。

-1 等于 --fast

-2,3,4,5,6(默认),7,8

-9 等于 --best

(3)bzip2(后缀名.bz2)

-d 解压缩,相当于bunzip,相当于bzcat X.bz2 > X

-k 保留原文件

-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。

-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.

-v 显示详细过程。

-# 数字越大,压缩比越高,速度越慢,文件越小。

-1 等于 --fast

-2,3,4,5,6,7,8

-9等于 --best (默认)

(4)xz(后缀名.xz)

-d 解压缩,相当于unxz,相当于xzcat X.xz > X

-k 保留原文件

-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.

-v 显示详细过程。

-# 数字越大,压缩比越高,速度越慢,文件越小。

-0 等于 --fast

-1 -2,3,4,5,6(默认),7,8

-9 等于 --best

(5)zip(后缀名.zip)

zip可以单独压缩也可以实现打包压缩(使用zip不需要手动添加后缀名)

zip -r 要压缩的文件     单独压缩

zip -r 新文件路径或名字 原文件路径   打包压缩

unzip 解压缩

寻找的文件|zip 将生成的文件名 -”可以将管道前的输出结果转为文件并压缩。

通过此方式压缩的文件只能使用“unzip -p 压缩包 > 新文件 ”来解压缩

unzip -p 预览解压缩后的内容到屏幕,可以配置重定向将结果保存到指定文件,权限会发生变化。

(6)tar(打包)

tar不是用来压缩的,是用来打包的。(就是归档)

-cf 创建包名字  原文件(可以指定多个)

-tf 包名字   显示包中的文件名

-tvf  详细显示包中的文件名

-rf 包名字 新文件名(可以指定多个)

--delete-f 包名字   被删除的文件名(可以指定多个)

-xf 包名字   解出所有的文件到当前目录

-xf 包名字 文件名   解所指定的文件到当前目录

-C 解包到指定目录

-v 显示过程

-Jcf 创建包的名字(.tar.xz) 原文件(可以指定多个)打包并用xz压缩

-jcf 创建包的名字(.tar.bz2) 原文件(可以指定多个)打包并用bzip压缩

-zcf 创建包的名字(.tar.gz) 原文件(可以指定多个)打包并用gzip压缩

-T 指定个列表,包含需要被打包的文件,以换行符为间隔

-X 指定个排除列表,以换行符为间隔

split -b Size -d tar -file -name prefix -name  将tar包分隔为多个文件

cat 被分隔出的多个文件名 > 单个文件名  合并


5.cpio

cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。

cpio

ls * |cpio -o > 文件名.cpio   打包。

cpio -id < 文件名.cpio   解开被cpio打包的文件

gzip文件名.cpio    生成文件名为文件名.cpio.gz

/boot/initramfs-xxxx.img

Centos6:cpio.gz 文件。zcat initramfs-xxxx.img |cpio -id

Centos7:cpio 文件 cpio -id < initramfs-xxxx.img

-tv < 文件名.cpio   预览cpio打包的文件。

时间: 2024-12-24 16:15:22

文件查找和压缩——Linux基本命令(12)的相关文章

linux基础正则表达式、shell基础、文件查找和压缩

linux基础正则表达式.shell基础.文件查找和压缩 1.shell编程显示电脑的基本信息,初级基础脚本.只适合6.7版本的. COLOR="\033[1;36m" COLOREND="\033[0m" echo -e "CPU type is $COLOR `lscpu |grep 'Model name'|tr -s ' '|cut -d: -f2`$COLOREND" echo -e "Disk space is $COLOR

linux基础学习-第十天(文件查找和压缩)

2016-08-12 授课内容: shell的流程控制 文件查找和压缩 shell的流程控制: 过程式编程语言: 顺序执行 选择执行 循环执行(未讲) 顺序执行: if语句: 单分支 if 判断条件; then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if CONDITION1; then if-true elifCONDITION2; then if-ture elifCONDITION3; then if-

第十章、文件查找和压缩

第十章.文件查找和压缩 本章内容 使用locate命令 使用find命令 压缩和解压缩工具 文件查找 在文件系统上查找符合条件的文件 文件查找:locate, find 非实时查找(数据库查找):locate 实时查找:find locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 依赖于事先构建的索引 索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系统,极消耗资源 工作

文件查找和压缩

在linux系统上,有一个核心思想,那就是一切皆文件.那我们在和linux系统打交道的同时,不免要和文件打交道.既然如此,那掌握文件查找.压缩.解压缩和文件归档类工具是我们必不可少的一项技能. 文件查找工具:locate.find locate是一款非实时性查询工具,它是根据事先建立的索引数据库来查找文件,索引的构建是在系统不繁忙时自动创建,需要遍历整个根文件系统,极其消耗资源,管理员也可以手工创建.正因为如此,所以locate查询文件比较快,但不能够精确查找,都是模糊查询. locate -i

文件查找与压缩面试题

9.文件查找与压缩面试题 试题 自己做 1.find -name 111.txt 2.find /data/files -type f -mtime +7 -size +10M -exec rm {} \; 3.find /test -user jorm -name "abc*" 4.find -type f -ctime +30 -name "*.log" -size +1G -exec mv {} /tmp \; 5.tar -cf /data/etc_bak.

马哥-文件查找和压缩-查找篇

文件查找和压缩 文件查找 文件查找:locate:非实时查找 find:实时查找 locate [OPTION] PATTERN 非实时搜索 工作特点:查找速度快 模糊查找 非实时查找 搜索的是文件的全路径,不仅仅是文件名 可能只搜索用户具备读取和执行权限的目录 locate [OPTION] -i #不区分大小写 -n NUM #显示前NUM行 -r #使用正则表达式 #locate命令搜索的数据库 [[email protected] /data/shell]#ll /var/lib/mlo

关于文件查找和解压缩

文件查找和解压缩在文件系统上查找符合条件的文件,文件查找的工具有两个,locate 和 find文件查找分为:            locate      非实时查找 (在数据库查找)             updatedb   更新数据库            经常用于搜索稳定的文件,比如配置文件            var/lib/mlocate/mlocate.db 数据库路径             find     实时查找 locate :       查询系统上预建的文件索引

7-2 文件查找和压缩归档

文件查找和压缩归档 文件查找 locate命令 介绍 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 依赖于事先构建的索引 索引的构建是在系统较为空闲时自动进行(周期性任务),管理员手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系统,极消耗资源 工作特点: 查找速度快 模糊查找 非实时查找 搜索的是文件的全路径,不仅仅是文件名 可能只搜索用户具备读取和执行权限的目录 语法 locate KEYWORD 常用选项 -i 不区分大小写的搜索

Linux中的文件查找和解压缩

Linux的文件查找 概述: 本章将主要介绍在Linux中怎样查找文件和解压缩.需要我们掌握的知识有:locate和find 命令的使用,以及如何使用压缩和解压缩工具. 一.Linux文件查找 在文件系统上常常需要根据文件的各种属性去查找符合条件的文件,此前使用的grep,egrep,fgrep属于文本过滤.文本搜索工具:而文件查找工具有两个,locate和find 1.文件查找分为两类: □实时查找:偏历所有文件进行条件匹配       find □非实时查找(数据库查找):根据索引查找  l