文件查找
locate:数据库查找
locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db
- 查找速度快
- 模糊查找
- 非实时查找
- 搜索的是文件全路径,不仅仅是文件名
- 可能只搜索用户具备读取和执行权限的目录
1
2
3
4
5
6
7
8
|
-n # 显示n条
-b # 匹配文件,不匹配目录
-c # 显示数量
-r # 使用正则
-d # 指定数据库
-q # 显示静默
updatedb # 更新数据库
|
find:实时查找
- 查找速度略慢
- 精确查找
- 实时查找
- 查找条件丰富
- 可能只搜索用户具备读取和执行权限的目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
-maxdepth N # 最大搜索目录深度,指定目录下的文件为第1级
-mindepth N # 最小搜索目录深度
-depth # 先查文件
-name # 文件名查找
-iname # 文件名查找,忽略大小写
-inum num # inode查找
-samefile name # inode与name相同的文件(查找硬链接)
-links n # 链接数为n的文件或目录
-regex "pattern" # 使用正则
-user USERNAME
-group GRPNAME
-uid UserID
-gid GroupID
-nouser
-nogroup
-type TYPE
#type 值
f #普通文件
d #目录文件
l #符号链接文件
s #套接字文件
b #块设备文件
c #字符设备文件
p #管道文件
-empty #空文件或空目录
-a # 与
-o # 或
-! # 非
-not # 非
|
条件匹配例子,使用()做分隔


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-path name -prune # 排除name中的文件
[root@ubuntu2204 ~]# find -name "*.txt"
./dir1/fa.txt
./dir1/fb.txt
./test-a.txt
./test-b.txt
./dir4/f-x.txt
./dir4/f-y.txt
#排除 dir1 目录中的 txt 文件,但还是会输出 dir1
[root@ubuntu2204 ~]# find -path './dir1' -prune -o -name "*.txt"
./dir1
./test-a.txt
./test-b.txt
./dir4/f-x.txt
./dir4/f-y.txt
#action 作用在后一个条件上
[root@ubuntu2204 ~]# find -path './dir1' -prune -o -name "*.txt" -print
./test-a.txt
./test-b.txt
./dir4/f-x.txt
./dir4/f-y.txt
#排除多个目录
[root@ubuntu2204 ~]# find \( -path './dir1' -o -path './dir4' \) -prune -o
name "*.txt" -print
./test-a.txt
./test-b.txt
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-size
-size +2k -size -10k
# 时间戳
#以天为单位
-atime [+|-]N
-mtime [+|-]N
-ctime [+|-]N
#以分钟为单位
-amin [+|-]N
-mmin [+|-]N
-cmin [+|-]N
|
-mtime:按文件内容的修改时间(Modification Time)查找。
-atime:按文件的访问时间(Access Time)查找。
-ctime:按文件的状态改变时间(Change Time)查找。
find . -mtime n:查找刚好在 n 天前修改过的文件。
find . -mtime +n:查找大于 n 天前(不包括第 n 天)修改的文件。
find . -mtime -n:查找小于 n 天前(包括今天到第 n 天)修改的文件。
根据权限查找
1
2
3
|
-perm 444 # 精确匹配
-perm /444 # 匹配到一位
-perm -444 # 至少有权限
|
动作
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-print # 默认
-print0
-ls
-fls file # 将结果保存到文件file中
-delete
-ok COMMAND {} \; # 执行命令,执行前询问
-exec COMMAND {} \; # 执行命令
{} #引用查找到的文件名称
find -name "*log" -exec cp {} {}.bak \;
find -amin +15 -ok rm {} \;
|

压缩,解压缩
zip,unzip:.zip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
zip zipfile FILE
unzip zipfile FILE
# zip
-1 # 快速压缩
-9 # 最高压缩比
-r # 递归压缩目录,到一个包
-u # 如果压缩包内有,则更新,如果没有,则追加进去
-f # 更新文件
-d # 从压缩包中删除
-m # 压缩后删除原文件
-z # 给压缩包加注释
-P passwd # 设置密码
-i # 仅压缩指定文件
-X # 不保留额外文件属性
-y # 保存链接符号,非链接指向的文件
# unzip
-l # 查看压缩包里内容
-n # 解压缩,不覆盖
-o # 覆盖
-x # 指定不需要解压缩的文件
-d # 指定解压到的目录
-t # 测试完整
-X # 解压时,恢复UID,GID
-K # 解压时,恢复权限
|
zcat:不解压查看文件
zcat 命令是专门用来查看 .gz 格式的压缩文件内容
不常用
compress , uncompress:.Z
1
2
3
4
5
|
-r # 递归压缩文件,压缩文件,不是整个目录
-d # 解压
-c > file # 将压缩文件另存为
compress fstab
uncompress fstab.Z
|
gzip,gunzip:.gz
1
2
3
|
-k # 保留源文件
-r # 递归同上
-l # 压缩文件信息
|
bzip2,bunzip2:.bz2
xz,unxz:.xz

打包,解包
对多目录与文件进行归档。
tar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-A # 将归档文件(.tar 文件)合并到现有的归档中
-c # 创建新的归档
-d # 找出归档与文件系统差异
--delete # 从归档中删除
-r # 追加文件至归档结尾
-t # 列出归档内容
-u # 仅追加比归档内容新的文件
-x # 从归档中解出文件
-v # 显示过程
-f # 指定压缩包文件
-p # 保留文件权限信息
-z #相当于gzip压缩工具
-j #相当于bzip2压缩工具
-J #相当于xz压缩工具
-h # 软链接指向文件也打包
--hard-dereference # 硬链接指向文件也打包
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#只打包,不压缩
tar -cf etc.tar /etc
tar -cf etc.tar /etc
# 追加
tar -rf test.tar f3.txt passwd
# 删除
tar --delete -f test.tar f1.txt f2.txt
# 将 additional.tar 的内容追加到 original.tar
tar -A -f original.tar additional.tar
# 指定目录解包
tar -xf log.tar -C /tmp
# 从文件中读取要打包的文件
[root@ubuntu2204 0510]# cat list.txt
f1.txt
f2.txt
[root@ubuntu2204 0510]# tar -zcvf x.tar.gz -T list.txt
f1.txt
f2.txt
# 排除文件,不归档
tar zcvf /root/a.tgz --exclude=/app/host1 --exclude=/app/host2 /app
tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
|
split
1
2
3
4
|
-b size # 指定分割大小
-C size # 同上,但尽量维持完整性
-d # 分割完后,后缀使用数字
-l # 指定行数,多少行切一个文件
|
