一、Linux下文件查找命令
1. 命令查找
- which 命令 : 找出命令的绝对路径
- whereis 命令 : 找出命令的路径以及文档手册信息 (注意whereis 不能写成 where is,中间没有空格)
2、文件查找(find)
find 命令用处甚多: 精确 查找,磁盘搜索,IO读写。
缺点: 由于是在硬盘上遍历查找,磁盘资源开销大。
用法一:找出文件并输出到屏幕
根据需求查找出来直接输出到屏幕
模板命令:find 查找路径 选项 关键字
举例说明:
小贴士: 块设备文件就是虚拟机上的硬件设备名,比如上图中的
/dev/sr0
其实就是linux上的光驱设备名,
寻址空间的区别:块设备文件是块设备的物理寻址空间;普通文件是块设备的虚拟寻址空间。普通文件比块设备文件多一层文件系统的地址转换机构。
问题分析: 实际上linux依照文件大小查找有一个规则, 就以上图中的查找小于1M的文件做例子, 先比较与 M 相同单位的文件,< 1M 的输出,比较完以后,直接会下降到 K 单位(1M 变成 1K),查找小于 1K 的文件,passwd是2.5K > 1K, 所以没有显示,需要使用 -1024K 才能找到 passwd,自己推一下就知道了。
-mtime选项举例:
[root@localhost test]# find ./ -type f -mtime +2 表示文件更改时间距离在2天以前
[root@localhost test]# find ./ -type f -mtime -2 表示文件更改时间距离在2天以内
[root@localhost test]# find ./ -type f -mtime 2 表示文件更改时间距离为2天
图表帮助理解:
用法2:找出文件并执行命令
根据需求查找出来后 执行某个动作(命令)
模板命令: find 路径 选项 关键字 动作
举例说明:
注意:
1. -exec或者-ok后面写完命令必须以空格反斜杠\;结尾( \;)
3. {}表示find命令所找出来的内容
二、Linux下文件压缩工具
1、常见的压缩与解压缩工具
要深刻理解后三个压缩工具只能压缩单个文件的含义,下面的举例说明会详细解释
2、工具的用法
① zip工具
压缩:zip 压缩后的文件路径 需要压缩的文件名称
选项:
-r 递归压缩,压缩目录
注意: zip压缩默认压缩后的格式就是.zip;当然也可以加后缀.zip,一般都加上
解压缩: unzip 解压后的文件路径 需要压缩的文件名称
-o 不提示的情况下覆盖文件
-d 指定解压缩路径
zip 解压后,文件的属主,属组会发生改变,哪个用户执行解压的,则解压后的文件属主,属组就是执行解压的这个用户
举例说明:
② gzip工具:
压缩:
gzip 需要压缩的单个文件
选项:
-d 解压缩
-r 递归压缩(目录)
解压缩:
gunzip 需要解压的文件
或者
gzip -d 需要解压的文件
gunzip file* 一次解压多个文件,*代表通配符;file*表示以file开头所有文件
举例说明:
以下两个压缩工具与gzip异曲同工,就不再加以解释:
③ bzip2工具
压缩:
bzip2 需要压缩的文件
选项:
-d 解压缩
④ xz工具
选项:
-z 压缩,默认
-d 解压缩 或者 unxz
压缩:
xz 文件名
解压缩:
unxz 文件名
或者
xz -d 文件名
三、Linux下文件打包工具
tar
命令:可以将多个文件打包成一个并且压缩,不会改变文件的属性(比如:文件属主,属组不会发生改变),很常用。
用法: tar 选项 打包后的文件 需要打包的文件
注意:
1. 以上选项前面的横杠"-"可以省略
2. 如果已经将文件压缩打包,那么就不能追加;如果只是打包就可以追加。
3. 参数顺序需要注意,最好把-f参数放到所有参数后面。
4. 当出现以下提示时,加一个大P参数解决。
tar: Removing leading `/' from member names
举例说明:
1. 将/tmp目录里的dir1目录和/etc/hosts文件打包到/tmp/dir4里叫dabao.tar
[root@localhost tmp]# tar -cvf /tmp/dir4/dabao.tar ./dir1 /etc/hosts
./dir1/
./dir1/test1.gz.bz2
./dir1/aaa/
./dir1/aaa/file2.gz
./dir1/file1.gz.bz2
tar: Removing leading `/' from member names
/etc/hosts
注意:以上错误提示可以忽略
查看打包后的文件内容:
[root@localhost tmp]# tar -tf dir4/dabao.tar
./dir1/
./dir1/test1.gz.bz2
./dir1/aaa/
./dir1/aaa/file2.gz
./dir1/file1.gz.bz2
etc/hosts
2. 将/boot目录和/root/install.log文件打包并压缩到/tmp目录下叫backup_boot.tar.gz
[root@localhost ~]# tar -cvzf /tmp/backup_boot.tar.gz /boot install.log
3. 解压tar包
[root@localhost tmp]# tar -xf backup_boot.tar.gz 解压到当前路径
[root@localhost tmp]# tar -xf backup_boot.tar.gz -C dir1/ 解压到指定路径
三、扩展补充
日期相关指令
1、date命令(重点)
date :打印或者设置当前系统日期和时间
date --help 自己先求帮助
① 打印日期或时间
打印系统当前日期或时间
打印系统非当前日期或时间
② 设置系统日期或时间
选项:-s 设置当前系统时间,只有root权限才能设置,其他只能查看。
date -s 20200523 设置为2020年 05月 23日 星期六 00:00:00 CST,这样会把具体时间设置成空 00:00:00
date -s '01:01:01' 日期不变,具体时间设置为 01:01:01
date -s "01:01:01 2020-05-2" 这样可以设置全部时间
date -s "01:01:01 20200523" 这样可以设置全部时间
date -s "2020-05-23 01:01:01" 这样可以设置全部时间
date -s "20200523 01:01:01" 这样可以设置全部时间
③ 系统时间同步硬件时间
hwclock : 查看并且设置硬件时间
小贴士: 在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
选项:
-s, --hctosys set the system time from the RTC 硬件时间设置系统时间
-w, --systohc set the RTC from the system time 系统时间设置硬件时间
-l, --localtime the RTC timescale is Local 查看硬件时间,可以直接输入 hwclock 不加 -l
举例说明:
[root@localhost ~]# hwclock --hctosys 硬件时间设置系统时间, 可以写成 -s
[root@localhost ~]# hwclock
2021年02月02日 星期二 16时36分13秒 -0.649922 秒
[root@localhost ~]# date
2021年 02月 02日 星期二 16:36:13 CST
timedatectl
设置和查看系统的时间和日期(设置时区以及开启或关闭ntp服务)
④ 应用案例
有时候我们需要用到当前的系统时间,如何调用?比如以当前系统日期命名创建目录或文件
$():括号里面的命令优先执行
2、cal命令
cal
: 查看日历
其他选项:
cal 或者 cal -1 表示直接输出当前月份的日历
cal -3 表示输出上一个月+本月+下个月的日历
cal -y 年份 表示输出某一个年份的日历