【linux命令】文件查找

本文介绍如何使用find命令在Linux系统中高效地查找文件。包括按文件名、路径、类型、时间戳、大小、权限和所有权等多种方式定位目标文件,并演示了如何结合其他命令实现文件的管理和批量操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件查找

1.根据文件名或正则表达式匹配搜索

$ find /home -name “*.txt” -print #在目录下寻找名字中后缀是.txt的文件。

$ find /home -iname “example*”  -print #忽略大小写

我们还可以用-o来找出符合多重条件的文件;

$ find /home \( -name “*.txt” -o -name “*,log” \) -print #注意括号中(与操作之间有一个空格。

2.查找路径

$find /home/jiao -path “*my*” -print

查找在目录下凡是路径中含有my字符的文件,

注意,my前后各有一个*,若把两个任意去掉一个,则含义就会变,自己体会实践。

-regex-path 的意义基本相同,只不过-regex后面跟的是正则表达式。

$ find . -regex  “.*\(\.py\|\.sh\)$”

同理,-iregex 是忽略大小写参数

3.否定参数

$ find . ! -name “.txt” -print

很好理解,找出后缀不是.txt 的文件

4.

基于目录深度的搜索

$ find . -maxdepth 2 -type f -print

-maxdepth 在当前目录下最多向下扩展两级子目录。

相反的:

$ find . -mindepth 2 -type f -print

-mindeprh 在当前目录下最少向下扩展两级子目录。

注意:
这里有一个要注意的效率问题,就是-maxdepth 和 -mindepth 要放在-f等参数前面。

否则,我们已经找到了当前目录下的所有符合要求的文件,却要去除那些不符合路径要求的文件,造成了资源浪费。

5.根据文件类型搜索

$find . -type f -print

6.根据文件时间搜索

每个文件都有三个时间属性:

访问时间(-atime):用户最经一次访问时间

修改时间(-mtime): 文件最后一次修改时间

变化时间(-ctime):文件元数据(权限、所属用户)最近修改时间

注意:linux中并没有新建时间。

$find . -type f -atime -7 -print #找出最近七天内访问的文件

$find . -type f -atime 7 -print #找出最近七天前访问的文件

$find . -type f -atime +7 -print #找出最近超过七天访问的文件

注意,我们默认是以天作为时间单位的。

而 -amin -mmin -cmin 则是以分钟作为时间单位。

7.基于文件大小的搜索

$ find . -type f -size +2k #大于2k的文件

$ find . -type f -size 2k #等于2k的文件

$ find . -type f -size -2k #小于2k的文件

除了k之外,还有

b----块(512字节)

c-----字节

w-----

k-----千字节

M----兆字节

8.删除匹配的文件

$ find . -type f -name “*.swp” -delete

9.

基于文件权限和所有权的匹配

$find . -type f -perm 644 -print

10.结合find执行命令或动作

find可以借助-exec于其他命令进行结合

我们要将所有的.c的结尾的文件拼起来,然后写入一个文件中。

$ find . -type f -name “*.c” -exec cat {} \;>c_file.txt

我们可以将10天前的.txt文件写入old.txt

$ find . -type f -mtime +10 -name “*.txt” -exec cp {} old.txt \;

注意,因为-exec 后面只能跟一个命令,要想写入多个命令,我们可以将多个命令写入脚本。

-exec ./comands.sh {} \;

11.

跳过特定的目录

$find /home \( -name “.git” -prune  \)  -o \( -type f -print \)

\( -name “.git” -prune  \) 是用于进行排除 prune就是修建,减少的意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值