如何使用find命令在Linux中查找文件
Linux Find命令是Linux系统管理员工具库中最强大的工具之一。
Find是一个命令行实用程序,它允许您根据用户给定的表达式搜索目录层次结构中的文件和目录,并对每个匹配的文件应用用户指定的操作。
您可以使用find命令根据文件权限,类型,日期,所有权,大小等搜索文件。它还可以与其他工具(如grep或sed)结合使用,以对这些文件执行操作。
Linux查找命令语法
在讨论如何使用find命令之前,让我们先回顾一下基本语法。
find实用程序表达式采用以下形式:
find [options] [path...] [expression]
options属性控制符号链接,调试选项和优化方法的处理。
path ...属性定义find将搜索文件的起始目录。
expression属性由选项,搜索模式和由运算符分隔的操作组成。
我们来看看以下命令:
linuxidc@linuxidc:~$ find -L /home/linuxidc/linuxmi/ -name "*.js" -exec chmod 644 {} \;
此命令包含一个参数-L(options),它允许find跟随符号链接,在/home/linuxidc/linuxmi/ (path…)下搜索所有以.js(expression)结尾的文件的整个目录树,并设置所有匹配的权限 文件到644。
按类型查找文件
要指定要查找的文件的类型,请使用-type参数。
您可以使用以下描述符指定文件类型:
f:常规文件
d:目录
l:符号链接
c:字符设备
b:块设备
p:命名管道(FIFO)
s:套接字
例如,如果要查找当前目录中的所有目录,只需运行:
linuxidc@linuxidc:~/linuxmi$ find . -type d
.
./www.linuxidc.com
./m.linuxidc.com
./linuxidc.com
linuxidc@linuxidc:~/linuxmi$
或者,如果要列出系统类型上的所有字符设备:
find / -type c
要将所有文件权限更改为644并将所有目录权限更改为755,请递归运行以下命令:
linuxidc@linuxidc:~/linuxmi$ find /home/linuxidc/linuxmi -type d -exec chmod 0755 {} \;
linuxidc@linuxidc:~/linuxmi$ find /home/linuxidc/linuxmi -type f -exec chmod 0644 {} \;
按名称查找文件
按名称查找文件可能是find命令最常用的用法。 要按名称查找文件,请将-name选项与要搜索的文件的名称一起传递。
要在/home/linuxidc/linuxmi目录中搜索名为document.pdf的文件,您将使用以下命令:
linuxidc@linuxidc:~$ sudo find /home/linuxidc/linuxmi -type f -name linuxidc.pdf
[sudo] linuxidc 的密码:
/home/linuxidc/linuxmi/linuxidc.pdf
linuxidc@linuxidc:~$ sudo find /home/linuxidc -type f -name linuxidc.pdf
/home/linuxidc/linuxmi/linuxidc.pdf
/home/linuxidc/Documents/linuxidc.pdf
linuxidc@linuxidc:~$
如果要进行不区分大小写的搜索,请使用-iname更改-name选项:
sudo find /home/linuxidc -type f -iname linuxidc.pdf
上面的命令将匹配linuxidc.pdf,LINUXIDC.pdf ...。
按扩展名查找文件
按扩展名搜索文件与按名称搜索文件相同。 例如,如果要查找/home/linuxidc目录中以.log.gz结尾的所有文件,可以使用:
linuxidc@linuxidc:~$ su -
密码:
root@linuxidc:~# find /home/linuxidc -type f -name '*.log.gz'
/home/linuxidc/linuxmi/linuxidc.log.gz
root@linuxidc:~#
值得一提的是,当我们使用通配符时,我们必须引用模式或使用反斜杠\来转义星号*符号,以便它不会被shell解释。
如果要查找与正则 *.log.gz不匹配的所有文件,可以使用-not参数,例如查找所有不以*.log.gz结尾的文件,您将使用:
linuxidc@linuxidc:~$ find /home/linuxidc/linuxmi -type f -not -name '*.log.gz'
/home/linuxidc/linuxmi/linuxidc.pdf
/home/linuxidc/linuxmi/linuxidc.js
linuxidc@linuxidc:~$
按大小查找文件
要根据大小查找文件,只需传递-size参数和大小标准。 您可以使用以下后缀来指定大小:
b:512字节块(默认)
c:字节
w:双字节字
k:Kilobytes
M:兆字节
G:千兆字节
假设您正在'/ tmp'目录中搜索正好1024字节的所有文件。 你将不得不运行如下命令:
linuxidc@linuxidc:~$ su -
密码:
root@linuxidc:~# find /tmp -type f -size 1024c
find命令还允许您搜索大于或小于指定大小的文件。
在下面的示例中,我们将在当前工作目录中搜索小于1MB的所有文件,请注意size值之前的减号:
root@linuxidc:~# find . -type f -size -1M
./.local/share/zeitgeist/fts.index/flintlock
./.local/share/Trash/files/wine-Ubuntu-wine-builds-artful.list.save
./.local/share/gnome-settings-daemon/input-sources-converted
./.mozilla/firefox/jrqxh55p.default/SecurityPreloadState.txt
./.mozilla/firefox/jrqxh55p.default/AlternateServices.txt
./.mozilla/firefox/jrqxh55p.default/.parentlock
./.config/enchant/en_US.exc
./.config/enchant/en_US.dic
root@linuxidc:~#
如果要搜索大小超过1MB的文件,则需要使用加号+符号:
root@linuxidc:~# find . -type f -size +1M
您甚至可以搜索大小范围内的文件,例如以下命令将查找3到4 MB之间的所有文件:
root@linuxidc:~# find . -type f -size +3M -size 4M
按修改日期查找文件
find命令还可以根据上次修改,访问或更改时间搜索文件。
与按尺寸搜索时相同,我们也可以使用加号和减号来指定大于或小于。
让我们说几天前你修改了一个dovecot配置文件,但你忘记了文件名。您可以轻松过滤/home/linuxidc/conf.d/目录中以.conf结尾的所有文件,并在过去10天内修改过:
find /home/linuxidc/conf.d -name "*.conf" -mtime 10
以下是使用-daystart选项根据修改日期过滤文件的另一个示例。列出/home目录中20天或更久以前修改过的所有文件:
find /home -mtime +20 -daystart
按权限查找文件
如果要使用find命令根据文件权限过滤文件,则需要使用-perm参数。
要在/home/linuxidc/html目录中查找权限为775的所有文件,您将使用:
find /home/linuxidc/html -perm 644
您可以在数字模式前加上减号 - 或斜杠/。
如果使用/作为前缀,则至少一个类别(用户,组或其他)必须至少为文件匹配设置相应的位。请考虑以下示例命令:
find . -perm 444
上述命令将匹配为用户,组或其他人设置了读权限的所有文件。
如果使用 - 作为前缀,则必须至少设置要匹配的文件。
以下命令将搜索对其所有者具有读取和权限的文件,但该组和其他用户可以读取但不写入的文件:
find . -perm -664
按所有者查找文件
要查找特定用户或组拥有的文件,可以使用-user和-group选项。
例如,要搜索用户linuxidc拥有的所有文件和目录,只需运行:
find / -user linuxidc
这是更高级的示例,假设您要查找用户www-data拥有的所有文件,并将匹配文件的所有权从www-data更改为linuxmi:
find / -user www-data -type f -exec chown linuxmi {} \;
查找和删除文件
要删除所有匹配的文件,请将参数-delete添加到匹配表达式的末尾。
仅当您确定结果仅与要删除的文件匹配时,请确保使用此选项。在使用-delete选项之前打印文件总是一个好主意。
例如,要删除/home/linuxidc/中以.temp结尾的所有文件,您将使用:
find /home/linuxidc/ -name `*.temp` -delete
总结
在本教程中,您学习了如何根据各种标准使用Linux查找实用程序,现在您已基本了解如何在Linux系统上查找文件。
如何使用find命令在Linux中查找文件的更多相关文章
- linux中查找文件属于那个软件包的方法
一.linux中查找文件属于那个软件包的方法 [root@salt prod]# whereis htpasswdhtpasswd: /usr/bin/htpasswd /usr/share/man/ ...
- Linux中查找文件和文件内容的常用命令
一.whereis <程序名称> 查找软件的安装路径-b 只查找二进制文件 -m 只查找帮助文件-s 只查找源代码-u 排除指定类型文件-f 只显示文件名-B <目录> 在指定 ...
- Window下使用ftp命令往Linux中发送文件
操作步骤:首先,切换到文件目录1.ftp ip地址2.连接成功后,输入正确的用户名和密码.3.binary(表示以二进制的格式传送)4.put/get 文件名(或文件的绝对路径) 退出:bye
- linux中查找文件并合并文件
find ./src -name '*.txt' -exec cat '{}' \; > test.txt
- linux中查找文件
locate arm-none-linux-gnueabi-gcc//有效 find / -name "arm-none-linux-gnueabi-gcc"
- Linux中检索文件
1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...
- linux中查找命令find、locate、whereis、which、type区别
linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...
- linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总
(一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]: 只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...
- Linux find命令:在目录中查找文件(超详解)
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...
随机推荐
- Alpha阶段贡献分配规则
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2244] 分配规则: 1.每人有基础分3分. 2.每参加一次组内会议及活动加0. ...
- Alpha冲刺一 (5/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9989898.html 作业博客:https://edu.cnblogs.com/campus/ ...
- specialized English for automation-Lesson 1 Analog Amplifiers
要求每天阅读一篇技术文档,不需要记下来,只是能看懂就好..后发现,这就是专业英语的课程资料. ----------------------------------------------------- ...
- Python windows serial
Python windows serial 一.参考文章: Serial port programming http://www.cnblogs.com/2zhyi/p/3405339.html py ...
- 每天一个linux命令(性能、优化):【转载】iostat命令
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同 ...
- Java之DelayQueue实际应用
在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其 中的对象只能在其到期时才能从队列中取走 ...
- Coding(码市)教程(一):基础配置
作者:Adaaaagio 出处:http://www.cnblogs.com/zyx418 欢迎转载,希望能够帮到更多的人,转载也请保留这段申明,谢谢! 初识coding是在新入职的公司,前辈说我们用 ...
- test20181024 zi
题意 分析 这种题一般是推公式,发现必须求得的量,然后定义函数记忆化. 然后那些函数里面又是递归处理,合并. 代码 为了不爆空间,用map存记忆化内容. #include<bits/stdc++ ...
- POJ3259 Wormholes 【Bellmanford推断是否存在负回路】
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011775691/article/details/27612757 非常easy的bellmanf ...
- Dictionary字典类介绍
说明 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是唯一的,而值不 ...