一天一个LINUX 命令- find

Linux 里比较常用的一个命令find,用来查找文件。今天介绍下find的常用使用方法


基本信息

命令名称 :find

英文解释:find - search for files in a directory hierarchy

所在目录: /bin/find

语法:find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]


解释说明

默认path是当前文件夹,默认的expression是 -print,expresson可能包含operators, options, tests, and actions。

find 根据path 和expression来查询,在命令行中,在第一个-(),!之前那部分为path,后面为expression。如果path 为空,则表示当前文件夹,如果expression为空,则默认使用print来表示expresson。

例如

在opt文件夹下执行ll,先看下opt文件夹下的文件以及文件夹。

再执行find

我们看到的结果是展示出opt文件夹下的所有文件和文件夹。

操作符:operators

操作符,类似编程里面的操作符,类似与,或,非,等等,相对来说,用的比较少。

( expr) #最高优先级,

! expr #对expr 的值取反

-not expr # 类似!expr

expr1 expr2 #等价于 expr1 and expr2

expr1 -a expr2 #等价于expr1 and expr2

expr1 -o expr2 #等价于 expr1 or expr2

命令:find . -type f -a -name '*.pdf' 搜索当前文件夹下 文件类型是f 的 and 文件名称是 ‘*.pdf’。

tests

(N can be +N or -N or N)

+n:大于n

-n:小于n

n :等于n

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去 n 天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去 n 天内创建的文件

-mtime n : 在过去 n 天内修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

-type [c]:查找指定类型的文件,

类型c可取值:

b - 块设备文件。

c - 字符设备文件。

d - 目录。

f - 普通文件

l - 符号链接文件。

p - 管道文件。

s - socket。

-delete:删除文件,如果删除成功则返回true,如果删除失败,将给出错误信息。

-exec [command] ;:注意有个分号";"结尾,该action是用于执行给定的命令。

-exec command {} +:这种-exec动作变种,只允许使用find查找到的文件一次;

-execdir command ;:与-exec相似,区别在于执行command时的working path是从匹配到的文件的所在目录;

-execdir command {} +:与-exec command {} +相似,区别也是在于命令的工作路径;

-ls:总是返回true。将找到的文件以"ls -dils"的格式打印出来,其中文件的size部分以KB为单位;

-ok [command] ;:类似于-exec,但在执行命令前会交互式进行询问;

-okdir [command] ;:类似于-execdir,但在执行命令前会交互式进行询问;

-print:总是返回true。这是默认的action,输出搜索到文件的全路径名,并尾随换行符"\n"。

-print0:总是返回true。输出搜索到文件的全路径名,并尾随空字符"\0"。

-printf [format]:以指定的格式输出匹配的文件名;

实例

  1. 查到opt文件夹的的文件夹并且名称为name 的

命令:find . -type d -a -name 'test'

  1. 列出当前目录以及子目录下的所有文件

命令:find . -type f

  1. 列表当前目录下的所有子目录

find . -type d

  1. 查询文件小于10kb的文件 并且文件名包含.gz

命令:find . -type f -size +10k -name '*.gz'

如果没有文件名现在则去掉 -name ‘*.gz’即可. 小于10k 则用-10k表示, 等于10k 则用10k 表示。

  1. 忽略大小写查找

命令:find . -type f -iname 'findfiletest.txt'

  1. 多条件查询(查找结尾为.txt或者pdf结尾的文件)

命令:find . -type f -name '*.txt' -o -name '*.pdf'

或者find . \( -name "*.txt" -o -name "*.pdf" \)

  1. 查询文件不是以.txt结尾的文件

命令:find . -type f ! -name '*.txt'

  1. 根据文件访问时间进行搜索 atime(文件最后访问时间,单位是天)mtime (文件最后修改时间),更改时间戳 (ctime),+ 表示“大于”,- 表示“小于”。

查看最近一天内访问的文件

命令:find . -type f -atime -1

  1. 按文件大小查找

-size选项指定大小查找文件(+表示“大于”,-表示“小于”):

b:512 字节块(默认)

c:字节

w:双字节字

k:KB

M:MB

G:GB

9.1查询大于5kb的文件

命令:find . -type f -size +5k

9.2查询小于5kb的文件

命令:find . -type f -size -5k

actionts

表达式中actions是对查到的文件进行操作的参数。

-fls file:跟-ls功能一样,区别是将信息写入file指定的文件,而不是显示在屏幕上。

-print:将找到的文件显示在屏幕上,实际上默认find命令就会将文件打印出来显示。

-print0:-print参数会将每个文件用换行分割,而这个参数适用null分割。有时候在脚本编程时可能会用上。

-fprint file:-print参数的写入文件版本。将内容写到文件中,而不是显示在屏幕上。

-fprint0 file:-print0的写入文件版本。

-delete:可以将找到的文件直接删除。

-printf:格式化输出方式打印

命令:将查到findfiletest.txt的文件删除

命令: find . -name findfiletest.txt -delete

find 命令 exec

  1. -exec参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

  1. {}花括号代表前面find查找出来的文件名

查找当前目录下所有.txt文件并打印出详细的文件信息

命令: find . -type f -name "*.txt" -exec ls -l {} \;

猜你喜欢

转载自blog.csdn.net/qq_20714801/article/details/129177334
今日推荐