Linux下文件查找命令
1、 命令查找
Linux下一切皆文件!
- which 命令 :找出命令的绝对路径
- whereis 命令 :找出命令的路径以及文档手册信息
[root@qiheo ~]# which mkdir
/usr/bin/mkdir
[root@qiheo ~]# whereis mkdir
mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz /usr/share/man/man1p/mkdir.1p.gz
/usr/share/man/man2/mkdir.2.gz /usr/share/man/man3p/mkdir.3p.gz
2、文件查找(find)
find 命令:精确查找,磁盘搜索,IO读写,cpu开销大
用法1:找出来输出到屏幕
- 根据需求查找出来直接输出到屏幕
- find 查找路径 选项 关键字
常见选项 | 含义 | 备注 |
-name | 按照文件名查找文件 | |
-iname | 按照文件名忽略大小写查找 | |
-size | 按照文件大小来查找 | +1M 大于1M -1M 小于1M 1M 等于1M |
-type | 按照文件类型来查找 | |
-mtime | 按文件修改时间来查找文件 | -n指n天以内,+n指n天以前 |
-atime | 按文件访问时间来查 | |
-ctime | 按文件创建时间来查找文件 | |
-perm | 按照文件权限来查找文件 |
- 举例说明:
0)环境准备
# mkdir /test
# touch /test/file1
# touch /test/FILE1
# cp -a /home/plantwo/* /test/
1)根据文件名查找
[root@plantwo ~]# find /test -name "file1"
[root@plantwo ~]# find /test -iname "file1"
[root@plantwo ~]# find /etc -name "*.conf"
2)根据文件类型查找
[root@plantwo ~]# find /usr/bin/ -type l
[root@plantwo ~]# find /dev -type b
[root@plantwo ~]# cd /test
[root@plantwo test]# find . -type d
[root@plantwo test]# find . -type f
3)根据文件大小查找
[root@plantwo test]# find . -type f -size +1M
[root@plantwo test]# find . -type f -size -1M
[root@plantwo test]# find . -type f -size -1024k
[root@plantwo test]# find . -type f -size 9M
4)根据文件属性(权限,创建者和所属组)
[root@plantwo test]# find . -user heima -group heima -type f
[root@plantwo test]# find . -type f -perm 644
-mtime选项举例:
[root@plantwo test]# find ./ -type f -mtime +2
[root@plantwo test]# find ./ -type f -mtime -2
[root@plantwo test]# find ./ -type f -mtime 2
用法2:找出来执行命令
- 根据需求查找出来后执行某个动作(命令)
- find 路径 选项 关键字 动作
常见动作 | 说明 |
-exec | 对查找到的文件直接执行该参数后的shell命令 |
-ok | 对查找到的文件询问式执行该参数后的shell命令 |
-delete | 删除查找到的文件 |
-ls | 列出查找到的文件,详细信息 |
打印出查找到的文件(默认选项) |
- 举例说明
语法结构:
注意:
1. -exec或者-ok后面写完命令必须以空格反斜杠\;结尾( \;)
2. {}表示find命令所找出来的内容
补充:
find . -type f -print????? ? #找出文件后打印出文件名(默认方式find . -type f)
find . -type f -delete????????#找出文件后删除
-exec和-ok 都是查询后执行,-ok会进行询问
-exec和-ok 后加 shell 命令 1.必须以空格反斜杠\;结尾( \;)、2.{}表示find命令所找出来的内容
find /test/ -type f -exec cp {} /tmp/ \;?? ??#直接复制
find /test/ -type f -ok cp {} /tmp/ \;? ? ??#询问是否确定复制
Linux下文件压缩工具
1、常见的压缩与解压缩工具(zip、gzip、bzip2、xz)
压缩工具 | 说明 | 解压缩工具 |
zip | 兼容类unix与windows,可以压缩多个文件或目录 | unzip |
gzip | 压缩单个文件,压缩率相对低,cpu开销相对低 | gunzip |
bzip2 | 压缩单个文件,压缩率相对高,cpu开销相对高 | bunzip2 |
xz | 压缩单个文件,压缩率高,压缩时间相对长,解压速度快,cpu开销高 | unxz |
2、工具的用法
zip test.zip test #普通压缩 zip -r /tmp/test.zip /test/ /etc/passwd #多个文件或目录压缩并带绝对路径,解压后也带绝对路径 zip -r /tmp/test.zip ./test/ #多个文件或目录压缩使用相对路径,解压后相对路径 unzip test.zip #普通解压 unzip test.zip -d /backup/ #解压到指定目录
gzip test #普通压缩 gzip压缩是把原文件压缩变成 .gz文件 gzip test1 test2 test3 #同时压缩文件 gzip -r testdir/ #压缩目录里的文件 gunzip test.gz #普通解压 gunzip test1.gztest2.gztest3.gz #多个文件同时解压 gunzip -r testdir/ #解缩目录里的文件 gzip -d test.gz #普通解压
bzip2 test #普通压缩 bzip2压缩是把原文件压缩变成 .bz2文件 bzip2 test1 test2 test3 #同时压缩文件 bunzip2 test.bz2 #普通解压 bunzip2 test1.bz2 test2.bz2 test3.bz2 #多个文件同时解压 bzip2 -d test.bz2 #普通解压
xz test #普通压缩 xz压缩是把原文件压缩变成 .xz文件 xz test1 test2 test3 #同时压缩文件 unxz test.xz #普通解压 unxz test1.xz test2.xz test3.xz #多个文件同时解压 xz -d test.xz #普通解压
Linux下文件打包工具(tar)
tar 命令:可以将多个文件打包成一个并且压缩,不会改变文件的属性,很常用。
用法: tar 选项 打包后的文件 需要打包的文件
常用选项 | 说明 |
-c | 创建tar包(打包) |
-z | 调用gzip工具压缩 |
-j | 调用bzip2工具压缩 |
-J | 调用xz工具压缩 |
-v | 显示详细信息 |
-f | 指定包名 |
-x | 解压 |
-C | 指定解压路径 |
-t | 列出或查看tar包内容 |
-r | 往tar包里追加文件 |
- 注意说明:
- 以上选项前面的横杠”-“可以省略
- 如果已经将文件压缩打包,那么就不能追加;如果只是打包就可以追加。
- 参数顺序需要注意,最好把-f参数放到所有参数后面。
- 当出现以下提示时,加一个大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/ 解压到指定路径
4.往tar包中追加文件
tar -f test.tar -r testfile 往test.tar包中追加testfile文件
日期相关指令
1、date命令
- date :打印或者设置当前系统日期和时间
- date –help 自己先求帮助
- hwclock:查看硬件时间,及设置硬件时间
- timedatectl: 设置和查看系统的日期和时间(设置时区以及开启或关闭ntp服务)
- ① 打印日期或时间
打印系统当前日期或时间
[root@plantwo ~]# date
[root@plantwo ~]# date +%D
[root@plantwo ~]# date +%F
[root@plantwo ~]# date +%Y-%m-%d
[root@plantwo ~]# date +%T
[root@plantwo ~]# date +%X
[root@plantwo ~]# date +'%F %X'
[root@plantwo ~]# date +%c
打印系统非当前日期或时间
[root@plantwo ~]# date -d '+3days' +%F
[root@plantwo ~]# date -d '-3days' +%F
[root@plantwo ~]# date -d '3days' +%F
[root@plantwo ~]# date -d '3days ago' +%F
[root@plantwo ~]# date --date='30days' +%F
- ② 设置系统日期或时间
选项:-s 设置当前系统时间,只有root权限才能设置,其他只能查看。
date -s 20200523 设置成20100523,这样会
把具体时间设置成空00:00:00
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 :查看并且设置硬件时间
选项:
-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
举例说明:
[root@plantwo ~]# hwclock --hctosys
[root@plantwo ~]# hwclock
2019-06-23 18:44:10.377920+08:00
[root@plantwo ~]# date
2019年 06月 23日 星期日 18:44:21 CST
[root@plantwo ~]# date -s "20221010 12:12:12"
2022年 10月 10日 星期一 12:12:12 CST
[root@plantwo ~]# date
2022年 10月 10日 星期一 12:12:14 CST
[root@plantwo ~]# hwclock
2019-06-23 18:45:01.368135+08:00
[root@plantwo ~]# hwclock --systohc
[root@plantwo ~]# hwclock
2022-10-10 12:12:43.179274+08:00
timedatectl -h 设置和查看系统的时间和日期(设置时区以及开启或关闭ntp服务)
- ④ 应用案例
- 有时候我们需要用到当前的系统时间,如何调用?比如以当前系统日期命名创建目录或文件
2020-10-10.log.tar.gz
2020-10-11.log.tar.gz
$():括号里面的命令优先执行 date +%F 2019-06-23
创建目录和文件,以当前系统日期命名
[root@heima ~]# mkdir $(date +%F)
[root@heima ~]# touch $(date -d '+3days' +%Y%m%d).log
2、cal命令
cal :查看日历
cal 或者 cal -1 #表示直接输出当前月份的日历 cal -3 #表示输出上一个月+本月+下个月的日历 cal -y #年份 表示输出某一个年份的日历
发表回复