find命令浅析

在Linux系统中查询,功能有很多。但是,find是linux下最棒的命令之一,其查询功能非常强大。接下来,我们便来看看其的强大之处。

  • 首先是find的语法:
  • find [起始目录] 寻找条件 操作
  • 以下将详细介绍find的大多数用法:
  • 工作方式:其沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作
  1. 打印文件和目录列表

    由此可见,find . -print   #打印文件和目录列表

    当使用-print时,’\n’作为用于分隔文件的定界符。

    -print0指明使用’\0’作为定界符来打印匹配的每一个文件名。此方法对于文件名中含有’\n’非常有效。

但在centos上经实际测试,find直接显示匹配到的文件,不需要加上-print选项。

2.根据文件名或正则表达式匹配搜索

选项-name指定了文件名所必须配皮的字符串.

打印以.txt结尾的文件

-iname表示匹配的文件名忽略大小写

3.条件限制,匹配多个条件中的一个

-a:表示且

-o:表示或

-not:表示非

打印当前目录下以.txt或.pdf结尾的文件

打印当前目录下以a开头且以.txt结尾的文件

打印当前目录下不以a开头且不以.txt结尾的文件

打印当前目录下不以txt结尾的文件 或 以pdf结尾的文件

-path:此参数用于将文件路径作为一个整体进行匹配。

-regex :此参数与-path类似,只不过其是基于正则表达式来匹配文件路径的。

$find . -regex ".*\( \.py \| \.sh \)$"

4. 否定参数

find也可以用“!”作为否定参数,它是怎么做到的呢?

如图,匹配所有不以.txt结尾的文件

5.基于目录的深度搜索

find命令在用时会遍历所有的子目录,我们可以采用一些参数来限制其遍历的深度。

-maxdepth:最大深度限制,1表示只在当前目录,2表示向下两级。以此类推。

$find . -maxdepth 1 -type f -print     #只列出当前目录下的所有普通文件

$find . -mindepth 2 -type f -print    #列出距当前目录至少两个子目录的所有文件

-mindepth:最小深度限制,与上面用法相似。

6.根据文件类型搜索

linux下的文件类型

文件类型 类型参数

普通文件 f

符号文件 l

目录 d

字符设备 c

块设备 b

套接字 s

Fifo(管道文件) p

因为此用法大多一致,故在此不再一一列举。

7.根据文件时间进行搜索

linux文件系统中的每个文件都有三种时间戳:

访问时间(atime——access time):就是上次访问这个文件的时间。

改变时间(ctime——change time):就是文件的inode改变的时间(什么是inode?)当你往一个文件中添加数据或者删除数据的时候,修改文件所有者的时候,链接改变的时候,文件的ctime就会发生改变。

修改时间(mtime——modification time):就是文件的内容上一次发生改变的时候的时间。

-atime,-ctime,-mtime可作为find的时间参数。单位是天,这些值通常还带有+或-:+表示大于,-表示小于。

由以上图可知,text.txt和其余是当天才创建的。如若读者不甚了解,也可以看其后面的日期,便可明白。

上面的时间都是基于“天”,还有基于“分钟”的。

-amin

-mmin

-cmin

由于用法与上相似,再次就不举例了。

find的另一个漂亮的特性是-newer参数,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的所有文件。

8.基于文件大小的搜索

-size:用法与上相似

$find . -type f -size +2k                  #查找大于2k的文件

$find . -type f -size 2k                  #查找等于2k的文件

$find . -type f -size -2k                  #查找小于2k的文件

除了k之外,还有其他文件大小单元

b——块(512字节)。

c——字节。

w——字。

k——千字节。

M——兆字节。

G——吉字节。

9 .删除匹配的文件

看到此处,可能你会不解,find明明是个查询命令,怎么来做删除呢?那接下来看看如何实现的

-delete参数可以实现此功能。

10.基于文件权限和所有权记性匹配

-perm:

-user:后可解用户名或uid

如$find . -type f -user root -print    # 打印root用户所拥有的文件

此处也不再一一列举了,读者可以自己去试试看,便知。

11.结合find执行命令或动作

-exec:此参数是find最强大的参数之一。

#将所有c程序拼接起来写入单个文件file.txt中

12.让find跳过特定的目录

$find  . \(-name ".git" -prune \) -o \( -type f -print \)

13.find与xargs结合使用

xargs:将标准输入转换成命令行参数。

$find . -type f -name "*.txt" -print0 |xargs  -0 rm -f   #将匹配到的文件删除,xargs   -0   将 \0作为输入定界符。

$find . -type f -name "*.c" -print0 | xargs  -0wc -l     #统计所有c程序文件的行数

本人总结的大概就这么多,如有补充或不足,请大家多多指出,并修改。俗话说的好开源是一种精神,共享的是一种美德。所以共同进步。

时间: 2024-10-13 03:54:08

find命令浅析的相关文章

Linux进程管理命令浅析

在Linux上,一切皆文件.同样,系统的实时状态信息也通过文件的形式保存在文件系统上.在/proc/中,保存的就是内核中的状态信息,而在/proc/#中(#为PID)保存了进程的信息,我们可以通过调用工具来查看这些文件中保存的信息从而来管理系统的进程.本次,分析的命令有top.htop.dstat和ps共4个命令. 一.top命令的使用 查看系统进程的实时状态.其格式是 top [d|b|n] -d #:指定刷新时间间隔,默认为3秒 -b:以批次方式显示 -n #:显示多少批次 ~]# top

SQL常用命令浅析

表操作备注:操作之前使用“use <数据库名>”应连接某个数据库.建表命令:create table <表名> (<字段名 1> <类型 1> [,..<字段名 n> <类型 n>]);例子:mysql> create table MyClass(> id int(4) not null primary key auto_increment,> name char(20) not null,> sex int(

linux关机重启命令浅析

linux关机重启命令 今天我们来介绍下linux系统中常用到的关机重启命令—shutdown.halt.reboot.poweroff以及init. shutdown命令 以安全的方式关闭系统或重启系统.它在系统关闭之前给系统上的所有登录用户提示一条警告信息.该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段. 命令格式 shutdown [OPTION]... TIME [MESSAGE] time 参数的格式可以有很多种.首先,可以是 hh:mm 格式的

sed命令浅析

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● sed 命令用法 sed stream editor for filtering and transforming text sed会将整行读取到模式空间(pattern space),在模式空间进行处理后,根据处理动作进行操作(默认输出),直到读取新的行,将模式空间的原有行覆盖,除非手动干预.而模式空间的内容也可以转移到保留空间,保留空间可以保留更多行,以供其他操作. sed [

vmstat命令浅析

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样). 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,

Linux获取帮助命令浅析

Linux系统下命令分为内部命令和外部命令.二者获取使用帮助的方法有所不同: 内部命令: help COMMAND 外部命令: (1)命令自带简要格式的使用帮助 # COMMAND --help (2)使用手册:manual 位置:/usr/share/man # man COMMAND man命令中的SECTION: NAME:功能性说明 SYNOPSIS:语法格式 DESCRIPTION:描述 OPTIONS:选项 EXAMPLES:使用实例 AUTHOR:作者 BUGS:报告程序bug的方

hbuilder环境下简单配置git

以下简单罗列了hbuilder环境下简单配置git的相关资料: 1. hbuilder egit插件的安装使用 http://blog.csdn.net/u011871921/article/details/44238971 2.git 在本地创建了一个仓库并添加了文件,现在这个本地仓库不想要,怎么删除?而且不会删除仓库里面的文件? 可以先清除本地文件夹下的git文件,然后在重新初始化新建的git仓库 //删除文件夹下的所有 .git 文件 find . -name ".git" |

busybox(三)最小根文件系统

目录 busybox(三)最小根文件系统 引入 构建终端 构造inittab 配置应用程序 构建C库 制作映像文件yaffs title: busybox(三)最小根文件系统 tag: arm date: 2018-11-14 17:57:08 --- busybox(三)最小根文件系统 引入 在busybox(一)浅析中,得出结论,一个最小的根文件系统需要以下几个元素 dev/console dev/null sbin/init-------------busybox提供,至少需要这个应用程序

eclipse上的git命令使用浅析

eclipse上的git命令使用浅析 2016-03-31 14:44 关于eclipse上git的安装和建立代码仓库的文章比较多,但作为一个初识git的人更希望了解每个命令的作用. 当项目连接到代码库后,我们可以在项目上右键->team进行git上的一些操作,具体怎么使用下面一步步的说明. Commit(提交): 点击会出现如下界面,commit message输入你提交的信息,一般是做了什么修改和工作,项目所有者和提交者会自动生成.下面Files选择哪些你做了修改的文件进行提交(这里注意你的