find命令用于在目录结构中搜索文件,并执行指定的操作。find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。

find指令用于在目录结构中查找文件,并履行指定的操作。此指令供给了相当多的查找条件,功用很强壮。

目录结构中查找文件 find指令详解(find 当前目录查找文件)  find命令详解 find命令 目录结构 搜索文件 linux命令 第1张

语法:find [开端目录] 寻觅条件 操作

阐明:find指令从指定的开端目录开端,递归地查找其各个子目录,查找满意寻觅条件的文件并对之采纳相关的操作。 该指令供给的寻觅条件可所以一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运 算符 and、or、not 的意义为:

(1) and:逻辑与,在指令顶用“-a”表明,是体系缺省的选项,表明只有当所给的条 件都满意时,寻觅条件才算满意。例如:

find –name ’tmp’ –xtype c -user ’inin’
% 该指令寻觅三个给定条件都满意的一切文件

(2) or:逻辑或,在指令顶用“-o”表明。该运算符表明只需所给的条件中有一个满意 时,寻觅条件就算满意。例如:

find –name ’tmp’ –o –name ’mina*’
% 该指令查询文件名为’tmp’或是匹配’mina*’的一切文件。

(3) not:逻辑非,在指令顶用“!”表明。该运算符表明查找不满意所给条件的文件 。例如:

find ! –name ’tmp’
% 该指令查询文件名不是’tmp’的一切文件。

需求阐明的是:当运用许多的逻辑选项时,能够用括号把这些选项括起来。为了防止Shell自身对括号引起误解,在话号前需求加转义字符“\”来去除括号的意义。例:

find \(–name ’tmp’ –xtype c -user ’inin’ \)

该指令的各选项意义如下:

首要,下列各个选项中的 n 值能够有三种输入方法,假定 n 为20,则:

+20 表明20今后(21,22,23等)

-20 表明20曾经(19,18,17等)

20 表明正好是20

以称号和文件特点查找。

-name ’字串’ 查找文件名匹配所给字串的一切文件,字串内可用通配符 *、?、[ ]。

-lname ’字串’ 查找文件名匹配所给字串的一切符号链接文件,字串内可用通配符 *、?、[ ]。

-gid n 查找归于ID号为 n 的用户组的一切文件。

-uid n 查找归于ID号为 n 的用户的一切文件。

-group ’字串’ 查找归于用户组名为所给字串的一切的文件。

-user ’字串’ 查找归于用户名为所给字串的一切的文件。

-empty 查找巨细为 0的目录或文件。

-path ’字串’ 查找路径名匹配所给字串的一切文件,字串内可用通配符*、?、[ ]。

-perm 权限 查找具有指定权限的文件和目录,权限的表明能够如711,644。

-size n[bckw] 查找指定文件巨细的文件,n 后边的字符表明单位,缺省为 b,代表512字节的块。

-type x 查找类型为 x 的文件,x 为下列字符之一:

b 块设备文件

c 字符设备文件

d 目录文件

p 命名管道(FIFO)

f 一般文件

l 符号链接文件(symbolic links)

#p#

s socket文件

-xtype x 与 -type 根本相同,但只查找符号链接文件。

以时刻为条件查找

-amin n 查找n分钟曾经被拜访过的一切文件。

-atime n 查找n天曾经被拜访过的一切文件。

-cmin n 查找n分钟曾经文件状况被修改正的一切文件。

-ctime n 查找n天曾经文件状况被修改正的一切文件。

-mmin n 查找n分钟曾经文件内容被修改正的一切文件。

-mtime n 查找n天曾经文件内容被修改正的一切文件。

可履行的操作

-exec 指令称号 {} 对契合条件的文件履行所给的Linux 指令,而不问询用户是否需求履行该指令。

{}表明指令的参数即为所找到的文件;指令的结束有必要以“ \;”完毕。

-ok 指令称号 {} 对契合条件的文件履行所给的Linux 指令,与exec不同的是,它会问询用户是否需求履行该指令。

-ls 具体列出所找到的一切文件。

-fprintf 文件名 将找到的文件名写入指定文件。

-print 在规范输出设备上显现查找出的文件名。

-printf 格局 格局的写法请参阅有关C言语的书。

find指令指令实例:

find . - name ‘main*’ - exec more {} \;

% 查找当时目录中一切以main最初的文件,并显现这些文件的内容。

find . \(- name a.out - o - name ‘*.o’\)> - atime +7 - exec rm {} \;

% 删去当时目录下一切一周之内没有被拜访过的a .out或*.o文件。

% 指令中的“.”表明当时目录,此刻 find 将从当时目录开端,逐一在其子目录中查找满意后边指定条件的文件。

% “\(” 和 “\)” 表明括号(),其间的 “\” 称为转义符。之所以这样写是因为对 Shell 而言,(和)还有不同的意义,而不是这儿的用于组合条件的用处。

% “-name a.out” 是指要查找名为a.out的文件;

% “-name ‘*.o’” 是指要查找一切姓名以 .o 结束的文件。

这两个 -name 之间的 -o 表明逻辑或(or),即查找姓名为a.out或姓名以 .o结束的文件。

% find指令在当时目录及其子目录下找到这佯的文件之后,再进行判别,看其***拜访时刻 是否在7天曾经(条件 -atime +7),若是,则对该文件履行指令 rm(-exec rm {} \;)。

其间 {} 代表当时查到的契合条件的文件名,\;则是语法所要求的。

% 上述指令中***行的***一个 \ 是续行符。当指令太长而在一行写不下时,可输入一个 \,之后体系将显现一个 >,指示用户持续输入指令。

上是目录结构中查找文件 find指令的详解,期望对您有所协助。

【修改引荐】

  1. linux vi指令详解:屏幕文本修改器Vi
  2. linux vi指令详解及运用技巧集锦
  3. 在linux vi指令行中增加行号的小技巧
转载请说明出处
知优网 » 目录结构中查找文件 find指令详解(find 当前目录查找文件)

发表评论

您需要后才能发表评论