文件查找和压缩

文件查找

1、locate

  这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:

  • locate

-i  //查找文件的时候不区分大小写 比如:locate –i passwd

-n  //只显示查找结果的前N行 比如:locate -n 5 passwd

2、find

  • find在不指定查找目录的情况下是对整个系统进行遍历查找

  • 使用格式 :find [指定查找目录] [查找规则] [查找完后执行的action]

  • [指定查找目录]例如:
      [root@centos7 ~]#find /etc /tmp /root -name passwd
      /etc/passwd
      /etc/pam.d/passwd

  注意:目录之间要用空格分开

  • [查找规则]

(1)根据文件名查找

-name //根据文件名查找(精确查找)
-iname //根据文件名查找,但是不区分大小写

文件名通配的知识

*表示 通配任意的字符
?表示 通配任意的单个字符
[ ] 表示 通配括号里面的任意一个字符

(2)根据文件所属用户和组来查找文件

-user  //根据属主来查找文件
-group  //根据属组来查找文件

(3)根据uid 和 gid来查找用户

find /tmp -uid 500 //查找uid是500 的文件
find /tmp -gid 1000 // 查找gid是1000的文件

(4)-a and -o and –not的使用

-a 连接两个不同的条件(两个条件必须同时满足)
-o 连接两个不同的条件(两个条件满足其一即可)
-not 对条件取反的

(5)根据文件时间戳的相关属性来查找文件

我们可以使用stat命令来查看一个文件的时间信息 如下:
-atime
-mtime
-ctime
-amin
-mmin
-cmin

所以这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟

find /tmp –atime +5  //表示查找在五天内没有访问过的文件
find /tmp -atime -5  //表示查找在五天内访问过的文件

(6)根据文件类型来查找文件

-type
f  // 普通文件
d  //目录文件
l  //链接文件
b  //块设备文件
c  //字符设备文件
p  //管道文件
s  //socket文件

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

-size find /tmp -size 2M  //查找在/tmp 目录下等于2M的文件
find /tmp -size +2M  //查找在/tmp 目录下大于2M的文件
find /tmp -size -2M  //查找在/tmp 目录下小于2M的文件

(8)根据文件权限查找文件

-perm
find /tmp -perm 755  //查找在/tmp目录下权限是755的文件
find /tmp -perm +222  //表示只要有一类用户(属主,属组,其他)的匹配写权限就行
find /tmp -perm -222  //表示必须所有类别用户都满足有写权限

(9)-nouser and -nogroup

find / -nogroup –a –nouser  //在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)

[查找完执行的action]

  • -print  //默认情况下的动作

  • -ls   //查找到后用ls 显示出来

  • -ok [commend]  //查找后执行命令的时候询问用户是否要执行

  • -exec [commend]   //查找后执行命令的时候不询问用户,直接执行

  • find /tmp -atime +30 –exec rm –rf {} ;
    删除查找到的超过30天没有访问过文件

压缩

Gzip

压缩
  gzip messages 权限不变
  gzip -#(1-9) messages 数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生成的压缩文件越小,默认压缩比为6.
  gzip -c messages > messages.gz 原文件保留,但权限根据umask来设置

解压

  gunzip message.gz 或 gzip -d messages.gz 权限不变
  gunzip -c messages.gz > messages 或 gzip -dc
  messages.gz > messages 或zcat messages.gz > message 压缩包保留,但权限根据umask来设置
  -v 压缩或解压时,显示详细过程

Bzip2

压缩
  bzip2 messages 权限不变,原文件消失
  bzip2 -k message 权限不变,原文件保留,可用在压缩和解压缩
  bzip -# (1-9) messages 数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生成的压缩文件为9.
  bzip2 -c messages > messages.bz2 原文件保留,但权限根据umask来设置

解压
  bunzip -k message.bz2 或 bzip2 -kd messages.bz2 权限不变,压缩包保留
  bunzip -c messages.bz2 > messages 或 bzip2 -dc
  messages.bz2 > messages 或bzcat messages.bz2 > message  压缩包保留,但权限根据umask来设置
  -v 压缩或解压时,显示详细过程

Xz

  • xz messages 权限不变,原文件消失
  • xz -k message 权限不变,原文件保留,可用在压缩和解压缩
  • xz -# (1-9) messages 数字越小,压缩速度越快,压缩比越低,数字越大,压缩速度越慢,压缩比越高,生成的压缩文件越小。
  • xz -c messages > messages.xz原文件保留,但权限根据umask来设置
  • unxz -k message.xz 或 xz -kd messages.xz 解压权限不变,压缩包保留
  • unxz -c messages.xz > messages 或 xz -dc messages.xz > messages 或xzcat messages.xz > message 压缩包保留,但权限根据umask来设置
  • -v 压缩或解压时,显示详细过程

打包

Tar
tar

    • -c 创建包
    • -v 打包或解包显示过程
    • -f 指定文件
    • -t 查看包中的内容
    • -x 从包中解开文件,可解开指定文件或全部文件
        -xf user.tar passwd 仅解出passwd   -xf user.tar 解出全部文件
    • -C 与-x 配合,指定解压到的目的目录
    • -j 压缩与解压缩时使用bzip2   tar jcvf userfile.tar.bz2 group gshadow passwd shadow
    • -z 压缩与解压缩时使用gzip   tar jcvf userfile.tar.bz2 group gshadow passwd shadow   tar zcvf userfile.tar.gz group gshadow passwd shadow
    • -J 压缩与解压缩时使用xz   tar Jcvf userfile.tar.xz group gshadow passwd shadow   解压时不需要表明用什么压缩工具压缩,tar命令会自动识别 解压只需 tar -xvf 压缩包

linux基础—课堂随笔04_文件查找和压缩的更多相关文章

  1. linux基础—课堂随笔05_文本三剑客之SED

    1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  2. linux基础—课堂随笔010_系统启动和内核管理

    系统启动和内核管理 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, functio ...

  3. linux基础—课堂随笔08_进程(转)

    进程优先级 命令 pstree -p 显示各个子线程 ps 进程状态(process state) UNIX风格:ps -ef BSD风格:ps aux 还有用到o参数,选项显示定制的信息: pid. ...

  4. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...

  5. linux基础—课堂随笔09_数组

    数组:(6.14 第一节) 取分区利用率,大于百分之八十则发出警报 取分区第一列 取分区使用率: 脚本: 检查脚本语法: ——end 数组切片: 1.跳过前两个取后面 2.跳过前两个取三个 生成10个 ...

  6. linux基础—课堂随笔07_磁盘存储和文件系统

    磁盘管理 管理分区 列出块设备  lsblk parted命令 高级分区操作 用法:  parted [选项]... [设备 [命令 [参数]...]...]  parted /dev/sdb mkl ...

  7. linux基础—课堂随笔06_软件包管理

    软件包管理 rpm 包和包管理器 包的组成:  二进制文件.库文件.配置文件.帮助文件 程序包管理器:  debian: deb文件,dpkg包管理器  redhat:rpm文件,rpm包管理器  r ...

  8. <实训|第十一天>学习一下linux中的进程,文件查找,文件压缩与IO重定向

    [root@localhost~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就 ...

  9. 07.进程管理+作业控制+文件查找与压缩+文件压缩与打包+tar打包解包+NFS

    进程管理 程序放在磁盘上叫文件,把它复制到内存,并在cpu运行,就叫进程, 进程多少也反映当前运行程序的多少 进程在系统中会为每个进程生成一个进程号,在所有的进程中有一个特殊进程即init进程, 它是 ...

随机推荐

  1. JavaScript基本入门02

    目录 JavaScript基础入门 02 条件语句 if 语句 if .. else 语句 switch 结构 循环语句 while 循环 continue 关键字 do...while语句 for ...

  2. react 添加 react-redux 基本用法

    安装 yarn add react-redux 创建文件.文件夹 |- redux |- actions.js |- reducer.js |- store.js actions.js export ...

  3. Spark在Windows上调试

    1. 背景 (1) spark的一般开发与运行流程是在本地Idea或Eclipse中写好对应的spark代码,然后打包部署至驱动节点,然后运行spark-submit.然而,当运行时异常,如空指针或数 ...

  4. reduce过滤数组

    原始数据 const data = [{ id: , spec: '规格1', rules: [{ rank: , breaks: }, { rank: , breaks: }, { rank: , ...

  5. python 学习记录1

    存储 序号   分类    技术      用途 01      存储     Number  数字(不可变) String     字符串(不可变) List          列表 Tuple   ...

  6. 综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列

    来源:http://t.cn/RVDWcfe 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一些不错的书,网上资料多.zeromq:少.没有专门写 ...

  7. 关于Spring的BeanUtils

    文章<用Spring的BeanUtils前,建议你先了解这几个坑>里面,作者最后得到了这几个结论: 1.Spring得BeanUtils得CopyProperties方法需要对应得属性有g ...

  8. 机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明

    GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果.这个时候就是需要动脑筋了.数据量比较大 ...

  9. python列表展开的方法

    只有一层嵌套的常见方法: # 普通方法 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] list_2 = [] for _ in list_1: list ...

  10. MySQL知识篇-SQL2

    1 数据库基本操作? (1) 查看数据库 show databases; (2)切换到指定的数据库 use dbname; (3)创建数据库 create database 库名 charset=ut ...