`

find命令攻略

阅读更多
find命令在linux中的地位可谓举足轻重,所以了解该命令的常用用法自然必不可少,下面就是经常用到的参数用法(参照了《linux shell脚本攻略》):

1、-name:按通配符匹配文件(-iname不区分大小写)。
示例:find /home/program/ -name "*.txt" -print
解释:查找/home/program目录下的所有以“.txt”结尾的文件,”-print“可省略。

更复杂一些,结合“-o”匹配多个文件:find . \( -name "*.txt" -o -name "*.pdf" \)
解释:找出当前目录下的以”.txt“或者”.pdf“结尾的文件,特殊字符”(“需要转义。

2、-regex:按正则表达式匹配文件(-iregex不区分大小写)。
示例:find /home/program -regex ".*\(\.sh\|\.py\)$"
解释:查找/home/program目录下所有以”.sh“或者”.py“结尾的文件(注意对特殊字符进行转义)。

3、-path:按通配符匹配文件路径(-ipath不区分大小写)。
示例:find ./ -path "*/linux/*"
解释:查找当前目录下含有”/linux/“的文件路径。

4、!:表示排除之意。
示例:find ./ ! -name "*.sh" -print
解释:查找当前目录下不以”.sh“结尾的文件。

5、-maxdepth depth:指定最大遍历的深度,1表示只搜索指定目录一层,2表示最多再往下搜索一层,依次类推(-mindepth depth:指定最小遍历深度)。
示例:find ~/program/ -maxpath 1 -name "*nu*" -print
解释:直接搜索~/program/目录下含“nu”的文件,不会继续遍历其中的目录,其实就相当于“ls ~/program | grep nu”。

6、-type:针对特定文件类型如普通文件(f)、目录(d)、字符设备(c)、块设备(b)、符号链接(l)、套接字(s)以及FIFO(p)等进行搜索。
示例:find . -type s -print
解释:搜索当前文件下的所有套接字文件。

7、-atime、-mtime、-ctime:根据文件时间进行搜索。Unix/Linux文件系统中的每一个文件都有三种时间戳,如下所示:
1)访问时间(-atime):用户最近一次访问文件的时间。
2)修改时间(-mtime):文件内容最后一次被修改的时间。
3)变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间。
-atime、-mtime、-ctime可作为find的时间选项,它们可以用整数值指定,单位是天。这些整数值通常还带有 - 或 + :- 表示小于,+ 表示大于。
示例:
1)打印出在最近7天内被访问过的所有文件:find . -type f -atime -7 -print
2)打印出恰好在7天前被访问过的所有文件:find . -type f -atime 7 -print
3)打印出访问时间超过7天的所有文件:find . -type f -atime +7 -print
类似地,我们可以根据修改时间,用-mtime进行搜索,也可以根据变化时间,用-ctime进行搜索。

8、-amin、-mmin、-cmin:用法同-atime、-mtime、-ctime,不过是以分钟为单位。

9、-newer:找出比指定的参考文件更新的(更近的修改时间)所有文件。
示例:find ./ -type f ! -newer test.sh
解释:搜索出当前目录下比test.sh更旧(还记得“!”吗?)的普通文件。

10、-size:根据文件大小搜索。
示例:
1)搜索大于2KB的文件:find . -type f -size +2k
2)搜索小于2KB的文件:find . -type f -size -2k
3)搜索大小等于2KB的文件:find . -type f -size 2k
除了k之外,还可以用其他文件大小单元:
1)b —— 块(512字节)。
2)c —— 字节。
3)w —— 字(2字节)。
4)k —— 1024字节。
5)M —— 1024K字节。
6)G —— 1024M字节。

11、-delete:删除搜索出来的文件。
示例:find ./ -type f -name "*.sh~" -delete
解释:删除当前目录下所有的sh备份文件。

12、-perm:按文件权限进行搜索。
示例:find .. -type f -name "*.php" ! -perm 644
解释:搜索当前目录下权限不为(因为加了“!”)644的php文件。

13、-user:搜索属于某用户或UID的文件。
示例:find /tmp -type f -user root -print
解释:查找/tmp目录中属于root的普通文件。

14、-exec:对搜索出的每个文件执行命令(注意格式,尤其是末尾的“\;”)。
示例1:find . -type f -user root -exec chown test {} \;
解释:将当前目录下属于root用户的普通文件的所有者更改为test用户。
注意:在这个命令中,{}是一个与-exec选项搭配使用的特殊字符串。对于每一个匹配的文件,{}会被替换成相应的文件名。
示例2:find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
解释:将10天前的 .txt文件复制到OLD目录中。
示例3:-exec能够同printf结合来生成有用的输出信息。例如:
find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \;
小计巧:在-exec参数中无法直接使用多个命令,它只能够接受单个命令,不过我们可以把多个命令写到一个shell脚本中(例如command.sh),然后在-exec中使用这个脚本:
-exec ./commands.sh {} \;

15、-prune:跳过特定目录或文件。
示例:find devel/source_path \( -name ".git" -prune \) -o \( -type f -print \)
解释:打印出不包括在.git目录中的所有文件。\( -name ".git" -prune \)的作用是用于进行排除,它指明了 .git目录应该被排除在外,而\( -type f -print \)指明了需要执行的动作,这些动作需要被放置在第二个语句块中。
分享到:
评论

相关推荐

    Linux Find命令详解---教你认识强大的Linux Find命令

    Linux Find命令是Linux系统中一个极其重要的工具,它允许用户在文件系统中查找符合特定条件的文件和目录。这个命令的灵活性和强大性使得它成为系统管理员和开发者的必备技能。下面将详细介绍Linux Find命令的一些...

    linux下find命令的用法

    "linux下find命令的用法" Linux 操作系统下的文件查找命令是 find 命令,这个命令可以帮助用户在 Linux 系统中快速查找需要的文件。find 命令的使用方法非常多样化,可以根据文件名、文件大小、文件类型、修改时间...

    使用find命令查找Linux中的隐藏文件的方法.docx

    使用find命令查找Linux中的隐藏文件的方法 find命令是Linux和Unix系统中最强大和灵活的命令之一,能够根据不同的选项和参数来实现各种文件搜索和管理任务。下面将详细介绍如何使用find命令查找Linux中的隐藏文件。 ...

    Linux实现类似find命令的myfind

    仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件

    find命令和xargs命令配合使用

    find命令和xargs命令配合使用,自己总结的,觉得还好

    find命令参数详解

    find 命令参数详解 find 命令是 Unix/Linux 系统中一个功能强大且灵活的命令,用于在文件系统中搜索和查找文件。该命令具有强大的功能,因此它的选项也很多,详细了解每个参数可以帮助我们更好地使用 find 命令。 ...

    linux下find命令查找排除命令(简单明了)

    ### Linux下的find命令查找与排除命令详解 在Linux系统中,`find`命令是一个非常强大的工具,用于在文件系统中搜索文件。通过结合不同的选项和参数,用户可以精确地定位到所需的文件或目录。本文将重点介绍如何使用...

    运用tasklist和find命令来检测进程是否存在

    运用tasklist和find命令来检测进程是否存在

    Linux中find命令的用法汇总

    Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找...

    Linux中Find命令的使用

    ### Linux中的Find命令详解 在Linux系统中,`find`命令是极其强大的工具之一,用于在文件系统中搜索文件。其功能强大且灵活,能够基于多种条件进行查找,包括文件名、类型、权限、大小、拥有者等。下面将详细介绍`...

    linux find命令使用手册

    ### Linux Find 命令使用手册详解 #### 概述 `find` 是一个功能强大的命令行工具,用于在Linux系统中的目录树中查找文件。它支持多种选项和表达式来帮助用户根据特定条件筛选出目标文件。此文档将详细介绍`find`...

    详尽的find 命令查找技巧.docx

    Linux 命令 find 的高级查找技巧 find 命令是 Linux 中最常用的命令之一,掌握了 find 命令的高级查找技巧可以使很多操作达到事半功倍的效果。本文将详细介绍 find 命令的格式、参数、表达式、tests、actions、...

    linux下find命令

    Linux 下 find 命令详解 find 命令是 Linux 系统中一个功能强大且常用的命令,用于在文件系统中搜索文件。它可以根据文件的各种属性,如名称、权限、所有者、组、时间戳、大小等,来查找指定的文件。 基本语法 ...

    AIX命令介绍篇-find-命令实例讲解.doc

    AIX命令介绍篇-find-命令实例讲解.doc

    find命令 查找和搜索文件

    find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。 find如不加任何参数,表示查找当前...

    find 命令的 7 种用法.doc

    find 命令的 7 种用法.doc

    linux find命令说明

    Linux find 命令说明 Linux find 命令是 Linux 系统中一个功能强大且灵活的命令,它可以根据各种条件来查找文件和目录。Find 命令的基本语法是 `find [pathname] [expression]`,其中 `pathname` 是要搜索的目录或...

    linux find 命令大全

    ### Linux Find 命令详解 #### 概述 `find` 命令是 Linux 系统中一个非常强大的工具,用于在指定路径下查找文件。它支持多种选项来帮助用户精确地定位到需要的文件。通过 `find` 命令,用户可以基于文件名、文件...

Global site tag (gtag.js) - Google Analytics