【linux find命令】在目录中查找文件并删除文件

您所在的位置:网站首页 linux删除文件夹内容命令 【linux find命令】在目录中查找文件并删除文件

【linux find命令】在目录中查找文件并删除文件

2024-05-25 08:17| 来源: 网络整理| 查看: 265

文章目录 find命令格式一、按文件名搜索二、按文件大小搜索三、按修改时间搜索四、按文件类型搜索五、按权限搜索六、按所有者和所属组搜索七、逻辑运算符八、其他选项

find命令格式

find pathname -options [-print -exec -ok]

find有两个参数:

pathname,第一个参数用来指定搜索路径。options,第二个参数用来指定搜索内容。

find命令搜索不建议过大的搜索范围,会消耗较大的系统资源,导致服务器压力过大。

一、按文件名搜索

find 搜索路径 【选项】 搜索内容

选项:

-name:按文件名搜索-iname:按文件名搜索,不区分文件名大小-inum: 按inode号搜索

举例说明:

name # 搜索的文件名必须和你的搜索内容一致才能找到。如果只包含搜索内容,则不会找到。 [wqf@b1i10 rm_test]$ find ./ -name test_3.txt ./test_3.txt iname

Linux 中的文件名是区分大小写的,也就是说,搜索小写文件,是找不到大写文件的。

# 不区分文件名大小写,用iname [wqf@b1i10 rm_test]$ find ./ -iname test_3.txt ./TEST_3.TXT ./test_3.txt inum

每个文件都有 inode 号,如果我们知道 inode 号,则也可以按照 inode 号来搜索文件。

# 如果知道文件名,用"ls -i"来査找inode号 [wqf@b1i10 rm_test]$ ls -i test_3.sh 29884450 test_3.sh # 如果知道inode号,则可以用find命令来査找文件 [wqf`在这里插入代码片`@b1i10 rm_test]$ find ./ -inum 29884450 ./test_3.sh

基于目录深度搜索 find 命令是递归遍历文件夹,列出当前目录及子目录下所有文件

命令 " find ./ -name "*.txt" " ,./ 路径下列出当前目录及子目录下以.txt结尾的文件。

如果想不递归查找文件夹,只要当前目录下的符合搜索范围的文件。

命令 " find ./ -maxdepth 1 -name "\*.txt" " ,./ 当前目录下查找以.txt结尾的文件,-maxdepth 1表示查找深度为1。

如果想搜索当前目录下面至少2个子目录的所有文件

命令 " find ./ -mindepth 2 -name "\*.txt" " 二、按文件大小搜索

find 搜索路径 【选项】 搜索内容

选项:

-size[+-]大小:按照指定大小搜索文件 “+“的意思是搜索比指定大小还要大的文件,”-” 的意思是搜索比指定大小还要小的文件。

find 默认的单位是512Byte,如果单位为b或不写单位,则按照 512Byte搜索,其他大小搜索单位如下:

'c' for bytes #搜索单位是c,按照字节搜索 'w' for two-byte words #搜索单位是w,按照双字节(中文)搜索 'k'for Kilobytes (units of 1024 bytes) #按照KB单位搜索,必须是小写的k 'M' for Megabytes (units of 1048576 bytes) #按照MB单位搜索,必须是大写的M 'G' for Gigabytes (units of 1073741824 bytes) #按照GB单位搜索,必须是大写的G

举例说明:

# 当前目录下面有一个大小是2M的文件 [wqf@b1i10 rm_test]$ ls -l --block-size=M mon_tj_cal.txt -rw-rw-r-- 1 summary_fz_province summary_fz_province 2M Dec 2 12:53 mon_tj_cal.txt # 当前目录下,查找大小刚好2M的文件,可以找到 [wqf@b1i10 rm_test]$ find ./ -size 2M ./mon_tj_cal.txt # 搜索小于2M的文件,可以找到很多其他文件 [wqf@b1i10 rm_test]$ find ./ -size -2M ./ ./mon_tj_cal.sh ./file.patch ./test_3.sh ./file1.txt ./newtest1 ./4.sh ./TEST_3.TXT ./test.txt ./testfile.txt ./1.txt ./test_3.txt ./newtest2 ./execute_test.sh ./file2.txt ./test_1.sh ./mon_tj_cal_1.sh ./test_2.sh 三、按修改时间搜索

find 搜索路径 【选项】 搜索内容

选项:

-atime[+-]时间:按文件访问时间搜索,记录文件最后一次被访问的时间。mtime[+-]时间:按文件数据修改时间搜索,当对这个文件内容进行修改后,modify显示的时间就会更新一次。ctime[+-]时间:按文件状态修改时间搜索,当文件内容、更改文件权限,链接属性时随文件inode更改而改变的时间。

以mtime来举例 “[±]” 时间的含义。 -5:代表 5 内修改的文件。 5:代表前 5~6 天那一天修改的文件。 +5:代表 6 天前修改的文件。

# 查找6天前修改的文件 [wqf@b1i10 rm_test]$ find ./ -mtime +5 ./mon_tj_cal.sh ./newtest1 ./4.sh ./test.txt ./testfile.txt ./1.txt ./mon_tj_cal.txt ./newtest2 ./gz_silence_val_1.sh ./execute_test.sh ./mon_tj_cal_1.sh # 查找5天内修改过的文件 [wqf@b1i10 rm_test]$ find ./ -mtime -5 ./ ./test_3.sh ./TEST_3.TXT ./test_3.txt ./test_1.sh ./test_2.sh # 查找 5~6 天那天修改的文件 [wqf@b1i10 rm_test]$ find ./ -mtime 5 ./file.patch ./file1.txt ./file2.txt 四、按文件类型搜索

find 搜索路径 【选项】 搜索内容

选项:

-type d:查找目录-type f:查找普通文件-type l:查找软链接文件

举例说明:

# 查找./目录下面有哪些子目录 [wqf@b1i10 zxt_test]$ find ./ -type d ./ ./take_data ./make_data ./drop_tables ./drop_tables/history ./drop_tables/test ./rm_test ./python ./push_data 五、按权限搜索

find 搜索路径 【选项】 搜索内容

选项:

-perm 权限模型:查找文件权限刚好等于“权限模型”的文件-perm -权限模式:査找文件权限全部包含"权限模式"的文件-perm /+权限模式:査找文件权限包含"权限模式"的任意一个权限的文件

Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。 Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限

举例说明:

# 测试 [wqf@b1i10 test]$ touch test_1.sh test_2.sh test_3.sh test_4.sh [wqf@b1i10 test]$ chmod 200 test_1.sh (只有拥有者有写的权限。) [wqf@b1i10 test]$ chmod 444 test_2.sh (所有用户只拥有读的权限。) [wqf@b1i10 test]$ chmod 600 test_3.sh (只有拥有者有读写权限。) [wqf@b1i10 test]$ chmod 755 test_4.sh (拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。) # 查看权限 [wqf@b1i10 test]$ ll total 0 --w------- 1 wqf wqf 0 Jan 10 15:13 test_1.sh -r--r--r-- 1 wqf wqf 0 Jan 10 15:13 test_2.sh -rw------- 1 wqf wqf 0 Jan 10 15:13 test_3.sh -rwxr-xr-x 1 wqf wqf 0 Jan 10 15:13 test_4.sh # 按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到 [wqf@b1i10 test]$ find ./ -perm 200 ./test_1.sh [wqf@b1i10 test]$ find ./ -perm 444 ./test_2.sh # "-perm-权限模式":必须完全包含。 # 因为 test_1.sh 的权限是200(--w-------)、test_3.sh 的权限600(-rw-------)、test_4.sh 的权限755(-rwxr-xr-x),所以可以找到;而test_2.sh的权限是(-r--r--r--),不包括200(--w-------)权限,所以找不到。 [wqf@b1i10 test]$ find ./ -perm -200 ./ ./test_3.sh


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3