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系统上查找文件。

如果您有任何问题或意见,请在下面留言。

linux中查找find命令的程序文件,如何使用find命令在Linux中查找文件相关推荐

  1. 第五课:系统目录及ls·文件类型及alias命令介绍

    1.上过一次我们学习了单用户和救援模式及服务器秘钥登录等操作,而我们最终的目的还是要操作和使用linux系统,所以我们今天先初步学习linux的基本命令如下: 一·目录介绍        ls命令介绍 ...

  2. Linux定时程序没有之行完,如何在linux上定时执行程序

    使用crond 在linux中定时执行任务 定期运行程序或者脚本是管理员要面临一个很普遍的问题 一. 使用crond监控程序运行程序 1. 使用cron来定期执行任务 使用crond (cron监控程 ...

  3. linux 文件夹的作用是什么,Linux个文件夹的作用及含义

    1, /  Linux文件系统的入口,也是处于最高一级的目录: 2, /bin 系统所需要的那些命令位于此目录,比如 ls.cp.mkdir等命令:功能和/usr/bin类似,这个目录中的文件都是可执 ...

  4. c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...

    C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...

  5. TensorRT 命令行程序trtexec常用用法

    安装TensorRT后,进入到/usr/src/tensorrt/bin目录下,可以看到有个trtexec二进制可执行文件,执行 ./trtexec --help可以看到命令行支持的所有参数项: == ...

  6. lisp代码编写地物符号_工程图中标注序号的LISP程序

    工程图中标注序号的LISP程序 (2007-04-03 17:11:45) 在工程设计工作中,经常要对设备.零件等标注序号.根据标准化要求,在标注点处要加上实心小圆点,然后引出直线 ;在另一端画出一个 ...

  7. c语言程序命令行,ttyd(C语言编写的命令行程序) v1.3.1 免费版

    ttyd是一个C语言编写的命令行程序,可以把任意命令行程序分享到网页上操作,可以看做是个网页版的远程终端,支持 Linux.macOS 系统,还可以运行在 OpenWrt 之类的嵌入式系统上. 功能特 ...

  8. Picocli-快速构建Java命令行程序

    相信每个Java程序员都曾使用过Scanner ,因编写出一个命令行程序而兴奋不已. 命令行程序也颇为实用,然而,使用Java来编写一个功能强大的命令行程序却并不容易,主要有以下几方面的痛点: 没有成 ...

  9. DOS命令大全 黑客必知的DOS命令集合

    一般来说dos命令都是在dos程序中进行的,如果电脑中安装有dos程序可以从开机选项中选择进入,在windows 系统中我们还可以从开始运行中输入cmd命令进入操作系统中的dos命令,如下图: 严格的 ...

  10. cmd命令查看ip的方法以及其他命令

    cmd命令查看ip的方法以及其他命令 现如今,在现在如此发达的信息社会中,电脑已经是家家户户必备的产品之一了.那么,在我们使用电脑的过程中,可能会遇到一些操作上的问题.那么我们该如何去解决它们呢?今天 ...

最新文章

  1. 宁波Uber优步司机奖励政策(1月18日~1月24日)
  2. 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围
  3. javaee和javaee_JavaEE概念简介
  4. 不能将brassplus类型的值分配到brass类的实体_Java 基础 - 类与对象
  5. 会玩!抖音上线拉春联特效 “拜个抖音年”活动参与人数超65万
  6. 几款远程工具介绍(Xshell)(SecureCRT)(putty)
  7. 局域网视频共享 php,window_Windows 7媒体库管理音视频文件实现局域网共享, 任务分析 多台电脑连接的家 - phpStudy...
  8. 1.1.3开启线程(Starting a Thread)
  9. .NET下多线程初探
  10. atitit.报表最佳实践oae 与报表引擎选型
  11. 薇娅直播卖火箭,B 站酒泉发卫星,航天贴标生意凭什么?
  12. 前端面试录音整理(私人版)
  13. Qt Creator启动慢的解决方法
  14. python通过正则匹配指定字符开头与结束提取中间内容
  15. linux php虚拟主机,linux上php虚拟主机(linux搭建虚拟主机)
  16. 服务器装win7找不到硬盘驱动,Windows 7安装问题时找不到硬盘驱动器怎么办
  17. 【初级算法】10.有效的数独
  18. 使用BMFont工具来精简字体库
  19. python 命令行解析模块_Python命令行解析模块详解
  20. Win10删除|修改鼠标右键快捷键快捷菜单的操作

热门文章

  1. 【Oracle】删除不存在表时避免报错
  2. 【Oracle】三种方式查看SQL语句的执行计划
  3. RK3288开发过程中遇到的问题点和解决方法之Packages
  4. Win7/Win8/Win8.1下配置apache+php运行缓慢问题解决方法
  5. Spring boot 解决 hibernate no session异常
  6. springboot在启动jar由于配置hibernate的映射文件上classpath导致的!BOOT-INF/classes/!路径出现!号问题解决方法
  7. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案
  8. java.lang.NoSuchMethodException: java.util.List.<init>() 问题解决
  9. mysql show status 过滤_给MySQL的show table status结果做过滤
  10. ActiveMQ代码示例