(linux) find command

find命令的主要功能是在系统中查找文件或目录:

find命令的一般形式为:findpathname-options[-print-exec-ok]

print为对匹配文件输出到标准输出,默认为标准输出,故可不写

exec为对匹配文件执行该参数给出的shell命令,形式为'command'{}\;

ok与exec类似,更安全,每步需要用户确认。

1.-name根据文件名匹配。例如:

find~-name"test.txt"在home路径及子目录下查找test.txt文件。

find.-name"[a-z][A-Z][0-9][0-9]*"在当前路径及子目录下查找,一个小写字母加一个大写字母加两个数字开头的文件。

find/-name"*.txt"查找所有txt文件。

2.-perm(permission)根据权限匹配。例如:

find.-perm777查找当前及子目录下所有权限为777的文件。(777意义详见chmod)

find.-perm-777查找权限大于等于777的文件。+为小于等于。

3.-user根据用户匹配。例如:

find.-userabc查找abc属主的文件。

4.-nouser查找属主账户已经被删除的文件。例如:

find.-nouser

5.-group,-nogroup与user,nouser类似。

6.-mtime根据更改时间匹配。例如:

find.-mtime-33天以内的

find.-mtime+44天以前的

7.-newer根据更改时间匹配。例如:

find.-newerabc更改时间比abc文件新的文件。

find.-newerabc!-newer123-execls-l{}\;更改时间比abc新但比123旧的文件,列出其详细信息。!为逻辑非。

8.-type根据文件类型匹配。

文件类型:

b:块设备文件

d:目录

c:字符设备文件

p:管道文件

l:符号链接文件

f:普通文件

例如:

find.-typef#查找普通文件

$find.-typed-name16M_Image#查找特定目录

9.-size根据文件长度匹配。例如:

find.-size+1000000c文件大于1M字节的文件。注意数字后面的c,c代表用字节计量。

find.-size10文件等于512块的文件。数字后没有c时,表示用块(1块=512字节)计量。

10.还可与xargs命令一同使用(后续介绍)。

======================================================================================

======================================================================================

                          linux find command

==========================================

格式: find [path...] [expression]

find/-nameaccess_log2>/dev/null不显示错误信息

find/-aminn##查找系统中最后N分钟访问的文件

find/-atimen##查找系统中最后n*24小时访问的文件

find/-cminn##查找系统中最后N分钟被改变状态的文件

find/-ctimen##查找系统中最后n*24小时被改变状态的文件

find/-empty##查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹

find/-false##查找系统中总是错误的文件

find/-fstypetype##查找系统中存在于指定文件系统的文件,例如:ext2.

find/-gidn##查找系统中文件数字组ID为n的文件

find/-groupgname##查找系统中文件属于gnam文件组,并且指定组和ID的文件

find/-mminn#查找在系统中最后n分钟里修改过的文件

find/-mtimen#查找在系统中最后24*n小时里修改过的文件

find/-nouser#查找在系统中属于作废用户的文件

find/-sizenc#查找在系统中长度为n字节的文件

find/-size+nc#查找在系统中长度大于n字节的文件

find/-daystart##测试系统从今天开始24小时以内的文件,用法类似-amin

find/-depth##使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容

find/-follow##遵循通配符链接方式查找;另外,也可忽略通配符链接方式查询

find/-help##显示命令摘要

find/-maxdepthlevels##在某个层次的目录中按照递减方法查找

find/-mount##不在文件系统目录中查找,用法类似-xdev.

find / -noleaf ##禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找

find / -version ##打印版本数字

-execcommand;##查找并执行命令

-fprintfile##打印文件完整文件名

-fprint0file##打印文件完整文件名包括空的文件

-fprintffileformat##打印文件格式

-okcommand;##给用户命令执行操作,根据用户的Y确认输入执行

-printfformat##打印文件格式

-ls ##打印同种文件格式的文件.

几个参数之间可以用-and,-or连接,某个参数取反可用!

======================

用manfind可以看到下面的说明:

-mtimen

Filesdatawaslastmodifiedn*24hoursago.===>manfind里面解释错误

find-mtime4是找到所有5天前4天后被更改的档案文件,

find-mtime-4是4天内被改的档案,

find-mtime+4是4天后被改的档案。

======================

查看某目录下有多少个文件命令:

#findDirPath-typef|wc-l

比如: find /home/snail -type f | wc -l

如果想查看 src 目录下有多少 C 文件,如下:# find ./src -type f -name "*.c" | wc -l

find 命令的 -type 后的参数有以下选择,每种都代表不一样的“类型(type)”

-type文件类型

b块文件(比如内存)

c字符文件(比如串口)

d目录文件(目录也是一种文件)

p有名管道(FIFO)

f普通文件

l符号链接(如果使用-L或-follow选项则不起作用,除非链接损坏)

ssocket文件(比如/tmp/mysql.sock)

        D      door (Solaris)

======================

文件查找命令find

find用于查找文件系统中指定文件,其格式为:find要查找的路径表达式

例如:find.-name1.txt\\在当前目录及其子目录下查找文件1.txt

find /tmp -name 1.txt     \\ 在/tmp 目录及其子目录下查找文件1.txt

======================

查找Linux下的空目录技巧

if [ -z "$1" ]; then

echoUsage:$0\

exit1

fi

echo-eNulldirectorylist:

for i in $(find $1 -type d -print)

do

TMP=$(ls$i)

if["$TMP"="\."];then

continue

elif[-z"$TMP"];then

echo$i

fi

done

======================

相关推荐