`

linux基本命令学习(2)--find

阅读更多

find命令用于查找文件和目录,任何位于参数之前的字符串都将被视为欲查找的目录。

find 可以指定查找条件如名称,类型,时间,文件大小,权限和所有者查找,针对多个条件进行与或非的逻辑运算。我们可以控制find的查找的行为,还可以和其他命令组合使用。

find
find .
find . -print
三者等效, 查找当前目录下所有的文件和目录(递归子目录),以每行一个文件或者目录的形式列举出,不包含隐藏文件

find lib opt bin
同上,查找指定的多个目录(lib/opt/bin)

(1) 指定查找条件

1) 按名称查找

find . -name readme.txt
查找当前目录下(递归子目录)的所有名为readme.txt的文件

find . -name \*.txt
find . -name "*.txt"
查找当前目录下(递归子目录)的所有名称以.txt结尾的文件,注意*号的写法,需要前面加\或者放到双引号中

find . -iname \*.txt
默认find是区分大小写的,如果不想区分大小写,请使用-iname替代-name,如上则"abc.TXT"将被查找到

2) 按类型查找

find . -type d
查找当前目录下(递归子目录)的所有目录

find . -type f
查找当前目录下(递归子目录)的所有文件

find . -type l
查找当前目录下(递归子目录)的所有符号链接

3) 按时间查找

1. 以小时为单位的时间
find 命令三个选项用于按照时间查找,单位都是小时:

mtime — 文件内容上次修改时间
atime — 文件被读取或访问的时间
ctime — 文件状态变化时间

这三个选项都需要配置一个n值使用,可以是-n / n / +n:
-n 小于 n
 n 正好与 n 相等
+n 大于 n

find . -mtime -1
查找当前目录下(递归子目录)的所有1小时内修改的文件和目录
find . -mtime +1
查找当前目录下(递归子目录)的所有修改时间超过1小时的文件和目录
find . -mtime 1
查找当前目录下(递归子目录)的所有恰好在1小时前修改的文件和目录

2. 以分钟为单位的时间
用法和*time类似,mmin、amin和cmin 的不同在于单位时间是分钟,用于查找在不到1小时的时间内变化了的文件和目录

find . -mmin -10
查找当前目录下(递归子目录)的所有10分钟内修改的文件和目录

find . -mmin +20
查找当前目录下(递归子目录)的所有20分钟外1小时内修改的文件和目录

3. 与特定的文件比较
-newer,-anewer和-cnewer选项用于查找与特定的文件比较的已修改或访问过的文件,类似mtime,atime和ctime
-newer  指内容最近被修改的文件
-anewer 指最近被读取过的文件
-cnewer 指状态最近发生变化的文件

find . -newer a.txt
查找当前目录下(递归子目录)的所有修改时间在a.txt之后(所以文件更新)的文件和目录


4) 按文件大小查找

1. -size 选项用于查找满足指定的大小条件的文件(注意不查找目录), +表示大于, -表示小于, 没有+1表示正好等于。文件大小的单位可以是字节(用c表示), kb(用k表示)。

find . -size -100c
查找当前目录下(递归子目录)的所有文件大小小于100字节的文件

find . -size +100k
查找当前目录下(递归子目录)的所有文件大小大于100k的文件

find . -size 0
查找当前目录下(递归子目录)的所有文件大小为0的文件

2. -empty 查找空文件和空文件夹, 和-size 0不同的在于-size 0 只查找空文件,或者说-empty -type f 等同于-size 0 :

find . -empty
查找当前目录下(递归子目录)的所有文件大小为0的文件和空文件夹

find . -empty -type f
查找当前目录下(递归子目录)的所有文件大小为0的文件

find . -empty -type d
查找当前目录下(递归子目录)的所有空目录


5) 按权限和所有者查找

find . -perm 777
查找当前目录下(递归子目录)的所有权限为777的文件和目录

find . -perm -u=rwx
查找当前目录下(递归子目录)的所有user权限为rwx的文件和目录

find . -perm -ug=x
查找当前目录下(递归子目录)的所有user和group权限为x的文件和目录

find . -user sky
查找当前目录下(递归子目录)的所有user为sky的文件和目录

find . -group users
查找当前目录下(递归子目录)的所有group为users的文件和目录

(2) 查找条件的逻辑运算

1. 逻辑与
find . -name "*.java" -size -mmin -10
find . -name "*.java" -a -size -mmin -10
查找当前目录下(递归子目录)的所有名为*.java并且修改时间在10分钟之内的文件,-a是默认选项

2. 逻辑或
find . -name "*.class" -o -name "*.jar"
查找当前目录下(递归子目录)的所有名为*.class或者*.jar的文件和目录

3. 逻辑非

find . ! -user sky
查找当前目录下(递归子目录)的所有user不是sky的文件和目录

(3) 控制查找的行为

find . -maxdepth 3 -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不超过3层

find . -maxdepth 1 -name "*.txt"
查找当前目录下(不递归子目录,因为maxdepth为1)的所有名为*.txt的文件

find . -mindepth 3 -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不低于3层

find . -mindepth 1 -name "*.txt"
查找当前目录下的子目录中(递归子目录)的所有名为*.txt的文件,不包含当前目录

find . -depth -name "*.txt"
查找当前目录下(递归子目录)的所有名为*.txt的文件,每个目录都是先在目录中进行查找,然后才继续查找其子目录

(4) find和其他命令的组合

find . -name "*.jar" -exec ls -l {} \;
find . -name "*.jar" -ls
查找当前目录下(递归子目录)的所有*.jar文件并使用ls -l列出详细信息

find . -name "*.java" -exec grep -H -m 1 HashMap {} \;
查找当前目录下(递归子目录)的所有的含有"HashMap"字样的*.java文件
(grep -H -m 1的意思是打印文件名,而且如果文件中有一次匹配就退出,避免多次匹配时为这一个文件打印多行)

find . -name "*.sh" -exec mv {} backup \;
查找当前目录下(递归子目录)的所有的*.sh文件并移动到backup目录中

 

 

 

1
0
分享到:
评论

相关推荐

    Linux基础命令及其解释--基础篇

    在Linux操作系统中,掌握基础命令是使用和管理系统的必备技能。Linux命令行提供了一种高效且灵活的方式来执行各种任务,从文件操作到系统管理,无一不在其涵盖范围之内。以下是一些常见的Linux基础命令及其详细解释...

    Linux 基础 88-其他命令-01-学习目标以及find命令的基本使用.flv

    Linux 基础 88-其他命令-01-学习目标以及find命令的基本使用.flv

    Linux 系统 命令大全---(修改版)

    本资源“Linux系统命令大全---(修改版)”提供了全面的Linux命令参考,对于学习和操作Linux系统至关重要。下面,我们将深入探讨Linux命令的相关知识点。 1. **基础命令**: - `ls`:列出目录内容,常用于查看当前...

    常用命令---idea--Linux--redis--dos

    DOS命令是Windows操作系统早期的命令行工具,虽然现在被PowerShell取代,但一些基本命令仍然适用: - `dir`:显示目录内容,类似Linux的`ls` - `cd`:切换目录 - `copy`:复制文件 - `del`:删除文件 - `move`...

    Linux中find命令的用法汇总

    在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件。 在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find...

    一起回顾一下linux常用命令----shell和unix和linux命

    如果你希望深入学习,可以阅读《The Linux Command Line》等经典书籍,或者参考CSDN博客上的"一起回顾一下linux常用命令 - sunxing007的专栏"等在线资源,如uuu.rar中可能包含的相关教程或笔记。 记住,Linux命令行...

    Linux操作命令详细文档-自整理

    为了更好地理解和操作Linux系统,掌握一些基本的Linux命令是至关重要的。以下是我根据“Linux操作命令详细文档-自整理”这个文档内容整理的一些核心知识点。 1. 文件与目录操作: - `ls`:列出目录内容,可以配合 ...

    Linux基本命令 - 2.rar

    "Linux基本命令 - 2.rar"这个压缩包可能包含了有关Linux命令行操作的教程或视频资源,比如"video.swf",可能是一个关于Linux命令的教学视频。 在Linux命令行中,有许多常用且重要的命令,这些命令构成了Linux用户...

    Linux学习:Linux基本命令

    【Linux学习:Linux基本命令】 Linux是一个开源操作系统,它的强大在于其命令行界面,通过一系列基本命令进行系统管理和操作。本篇文章将详细讲解Linux的基本命令,包括登录和退出、文件命令、目录和层次命令、查找...

    Linux命令大全 2011-12-10

    除了这些基本命令,还有许多其他高级命令和工具,如管道(|)、重定向(>,<,>>),以及shell脚本编程等。学习Linux命令不仅可以提高工作效率,也是深入理解操作系统原理的重要步骤。 由于篇幅限制,这里仅列举了...

    学习情境1项目2Linux基本命令.pptx

    Linux基本命令 Linux命令基础 ---------------- 在Linux系统中,命令区分大小写。在命令行中,可以使用Tab键来自动补齐命令,即可以只输入命令的前几个字母,然后按Tab键,系统将自动补齐该命令,若命令不止一个,...

    linux常用命令大全eb-mas开发笔记

    熟悉并掌握Linux命令行的基本操作是每个专业IT人士的必备技能。本篇将详细介绍Linux常用命令及其应用,帮助你提升工作效率。 1. **ls** 命令:用于列出目录中的文件和子目录。通过添加选项如 `-l`(长格式)可显示...

    linux常用命令大全mage-processing-m开发笔记

    在深入学习Linux时,理解这些基本命令以及如何组合使用它们至关重要。同时,对于mage-processing-m开发笔记中的内容,可能涉及图像处理、编程语言如Python的使用,以及相关的库和工具,如OpenCV、PIL等,这些都需要...

    linux命令及远程登录---基础篇

    在Linux操作系统中,掌握基本的命令行操作是每个IT专业人士的必备技能。这篇文档将带你了解Linux命令及远程登录的基础知识,这对于日常的系统管理、软件开发和问题排查至关重要。 一、Linux命令行基础 1. 文件与...

    linux常用命令大全yer-mast开发笔记

    虽然界面简单,但 `vi` 或 `vim` 是非常强大的编辑器,学习基本操作(如i插入模式,Esc退出插入模式,:wq保存并退出)很有用。 这些命令只是Linux世界中的一小部分,但掌握它们足以让你在日常操作中游刃有余。随着...

    linux命令学习,方便进入linux学习

    对于初学者来说,从零开始学习Linux命令是迈入这个领域的基础。 首先,要理解Linux命令行界面的工作方式。在Red Hat Enterprise Linux 5中,用户可以通过多种方式进入文本模式,例如直接启动到文本模式、使用虚拟...

    学习Linux---不得不知的Linux命令

    ### 学习Linux---不得不知的Linux命令 在Linux操作系统中,掌握一系列基本且重要的命令是每个用户必备的技能之一。这些命令可以帮助我们更高效地管理服务器、进行日常操作及故障排查等工作。以下是对给定内容中列出...

    基于Linux网络操作系统的易错命令基本归纳.pdf

    本资源摘要主要介绍 Linux 操作系统中易错的基本命令,旨在帮助新手快速掌握 Linux 基本命令,并解决一些常见的易错问题。 1. 分区命令 在 Linux 系统中,分区命令是非常重要的。例如,在创建分区时,需要注意哪些...

    linux命令学习-新手入门

    对于新手而言,掌握基本的Linux命令是进入这个领域的第一步。以下是一些关键的Linux命令和概念的详细解释: 1. **more 和 less 命令**: - `more` 用于查看文件内容,一页一页地滚动。它不能回滚查看已过的页面。 ...

    Linux命令学习-tar命令手册

    ### Linux命令学习-tar命令手册 #### tar命令详解 **tar** 命令是Linux系统中最常用的文件打包和压缩工具之一。它来源于英文单词 "tape archive" 的缩写,最初用于磁带归档,但现在广泛应用于文件和目录的打包与...

Global site tag (gtag.js) - Google Analytics