Linux find 用法示例.docx

上传人:b****1 文档编号:1723783 上传时间:2023-05-01 格式:DOCX 页数:14 大小:24.71KB
下载 相关 举报
Linux find 用法示例.docx_第1页
第1页 / 共14页
Linux find 用法示例.docx_第2页
第2页 / 共14页
Linux find 用法示例.docx_第3页
第3页 / 共14页
Linux find 用法示例.docx_第4页
第4页 / 共14页
Linux find 用法示例.docx_第5页
第5页 / 共14页
Linux find 用法示例.docx_第6页
第6页 / 共14页
Linux find 用法示例.docx_第7页
第7页 / 共14页
Linux find 用法示例.docx_第8页
第8页 / 共14页
Linux find 用法示例.docx_第9页
第9页 / 共14页
Linux find 用法示例.docx_第10页
第10页 / 共14页
Linux find 用法示例.docx_第11页
第11页 / 共14页
Linux find 用法示例.docx_第12页
第12页 / 共14页
Linux find 用法示例.docx_第13页
第13页 / 共14页
Linux find 用法示例.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Linux find 用法示例.docx

《Linux find 用法示例.docx》由会员分享,可在线阅读,更多相关《Linux find 用法示例.docx(14页珍藏版)》请在冰点文库上搜索。

Linux find 用法示例.docx

Linuxfind用法示例

Linux中find常见用法示例

·find  path  -option  [  -print]  [-exec  -ok  command]  {}\;

find命令的参数;

pathname:

find命令所查找的目录路径。

例如用.来表示当前目录,用/来表示系统根目录。

-print:

find命令将匹配的文件输出到标准输出。

-exec:

find命令对匹配的文件执行该参数所给出的shell命令。

相应命令的形式为'command'{}\;,注意{}和\;之间的空格。

-ok:

和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

#-print将查找到的文件输出到标准输出

#-exec  command  {}\;     —–将查到的文件执行command操作,{}和\;之间有空格

#-ok和-exec相同,只不过在操作前要询用户

例:

find.-name.svn|xargsrm-rf

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

-name  filename            #查找名为filename的文件

-perm                       #按执行权限来查找

-user   username            #按文件属主来查找

-groupgroupname           #按组来查找

-mtime  -n+n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

-atime   -n+n              #按文件访问时间来查GIN:

0px">

-ctime   -n+n             #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在

-nouser                    #查无有效属主的文件,即文件的属主在/etc/passwd中不存

-newer  f1!

f2             找文件,-n指n天以内,+n指n天以前 

-ctime   -n+n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 

-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在

-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存

-newer  f1!

f2              #查更改时间比f1新但比f2旧的文件

-type   b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件

-size     n[c]              #查长度为n块[或n字节]的文件

-depth                      #使查找在进入子目录前先行查找完本目录

-fstype                    #查更改时间比f1新但比f2旧的文件

-type   b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件

-size     n[c]              #查长度为n块[或n字节]的文件

-depth                      #使查找在进入子目录前先行查找完本目录

-fstype                     #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到

-mount                      #查文件时不跨越文件系统mount点

-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件

-cpio               %;     #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到

-mount                      #查文件时不跨越文件系统mount点

-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件

-cpio                       #对匹配的文件使用cpio命令,将他们备份到磁带设备中

-prune                      #忽略某个目录

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

$find  ~  -name  "*.txt"  -print   #在$HOME中查.txt文件并显示

$find  .   -name  "*.txt"  -print

$find  .   -name  "[A-Z]*"  -print  #查以大写字母开头的文件

$find  /etc  -name  "host*"  -print#查以host开头的文件

$find  .  -name  "[a-z][a-z][0–9][0–9].txt"   -print  #查以两个小写字母和两个数字开头的txt文件

$find.  -perm  755  -print

$find  .  -perm-007  -execls-l{}\;  #查所有用户都可读写执行的文件同-perm777

$find  .-typed  -print

$find  .  !

  -type  d  -print 

$find  .  -typel  -print

$find  .  -size  +1000000c  -print       #查长度大于1Mb的文件

$find  .  -size  100c        -print      #查长度为100c的文件

$find  .  -size  +10  -print             #查长度超过期作废10块的文件(1块=512字节)

$cd/

$find  etc  home  apps   -depth  -print  |cpio  -ivcdC65536  -o  /dev/rmt0

$find  /etc-name"passwd*"  -execgrep  "cnscn"  {}  \;  #看是否存在cnscn用户

$find.-name"yao*"  |xargsfile

$find  .-name"yao*"  |  xargs  echo   "">/tmp/core.log

$find  .-name"yao*"  |xargs  chmod  o-w

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

find  -nameapril*                   在当前目录下查找以april开始的文件

find  -name  april*  fprintfile       在当前目录下查找以april开始的文件,并把结果输出到file中

find  -nameap*-o-namemay*  查找以ap或may开头的文件

find  /mnt  -nametom.txt  -ftypevfat  在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件

find  /mnt  -namet.txt!

-ftypevfat  在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件

find  /tmp  -namewa*-typel           在/tmp下查找名为wa开头且类型为符号链接的文件

find  /home  -mtime  -2                在/home下查最近两天内改动过的文件

find/home   -atime-1                 查1天之内被存取过的文件

find/home-mmin   +60                 在/home下查60分钟前改动过的文件

find/home  -amin  +30                 查最近30分钟前被存取过的文件

find/home  -newer  tmp.txt            在/home下查更新时间比tmp.txt近的文件或目录

find/home  -anewer  tmp.txt           在/home下查存取时间比tmp.txt近的文件或目录

find  /home  -used  -2                 列出文件或目录被改动过之后,在2日内被存取过的文件或目录

find  /home  -usercnscn               列出/home目录内属于用户cnscn的文件或目录

find  /home  -uid  +501                 列出/home目录内用户的识别码大于501的文件或目录

find  /home  -group  cnscn             列出/home内组为cnscn的文件或目录

find  /home  -gid501                  列出/home内组id为501的文件或目录

find  /home  -nouser                   列出/home内不属于本地用户的文件或目录

find  /home  -nogroup                  列出/home内不属于本地组的文件或目录

find  /home   -nametmp.txt   -maxdepth  4  列出/home内的tmp.txt查时深度最多为3层

find  /home  -nametmp.txt  -mindepth  3  从第2层开始查

find  /home  -empty                    查找大小为0的文件或空目录

find  /home  -size  +512k              查大于512k的文件

find  /home  -size  -512k              查小于512k的文件

find  /home  -links  +2               查硬连接数大于2的文件或目录

find  /home  -perm  0700               查权限为700的文件或目录

find  /tmp  -nametmp.txt  -execcat{}\;

find  /tmp  -name  tmp.txt  -ok  rm{}\;

find   /  -amin   -10    #查找在系统中最后10分钟访问的文件

find   /  -atime  -2       #查找在系统中最后48小时访问的文件

find   /  -empty            #查找在系统中为空的文件或者文件夹

find   /  -group  cat       #查找在系统中属于groupcat的文件

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

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

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

find   /  -user   fred    #查找在系统中属于FRED这个用户的文件

查当前目录下的所有普通文件

#find.-typef-execls-l{}\; 

-rw-r–r–   1root     root        349282003-02-25  ./conf/httpd.conf 

-rw-r–r–   1root     root        129592003-02-25  ./conf/magic 

-rw-r–r–   1root     root         1802003-02-25  ./conf.d/README 

查当前目录下的所有普通文件,并在-exec选项中使用ls-l命令将它们列出

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

在/logs目录中查找更改时间在5日以前的文件并删除它们:

$findlogs-typef-mtime+5-exec  -ok  rm{}\;

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

查询当天修改过的文件

[root@bookclass]#find  ./  -mtime  -1  -typef  -exec  ls-l  {}\;

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

查询文件并询问是否要显示

[root@bookclass]#find  ./  -mtime  -1  -typef  -ok  ls-l  {}\;  

?

y

-rw-r–r–   1cnscn   cnscn      13709  1月1212:

22./classDB.inc.php

[root@bookclass]#find  ./  -mtime  -1  -typef  -ok  ls-l  {}\;  

?

n

[root@bookclass]#

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

查询并交给awk去处理

[root@bookclass]#who  |  awk  ’{print$1"\t"$2}’

cnscn   pts/0

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

awk—grep—sed

[root@bookclass]#df  -k|  awk‘{print$1}’|  grep  -v  ’none’|  sed  s"/\/dev\///g"

文件系统

sda2

sda1

[root@bookclass]#df  -k|  awk‘{print$1}’|  grep  -v  ’none’

文件系统

/dev/sda2

/dev/sda1

1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名

A)find  /tmp  -name  "*.h"  |xargs  -n50  grepSYSCALL_VECTOR

B)grep  SYSCALL_VECTOR  /tmp/*.h|cut   -d’:

'  -f1|uniq>filename

C)find  /tmp  -name"*.h"  -execgrep"SYSCALL_VECTOR"  {}  \;-print

2)find/-namefilename-execrm-rf{}\;

   find/-namefilename-okrm-rf{}\;

3)比如要查找磁盘中大于3M的文件:

find.-size+3000k-execls-ld{};

4)将find出来的东西拷到另一个地方

find*.c-execcp‘{}’/tmp‘;’

如果有特殊文件,可以用cpio,也可以用这样的语法:

finddir-namefilename-print|cpio-pdvnewdir

6)查找2004-11-3016:

36:

37时更改过的文件

#A=`find./-name"*php"`|  ls-l–full-time$A2>/dev/null|grep"2004-11-3016:

36:

37"

Linux-all, Linux | NoComments»

find实例

四月18th,2006

  要在/usr/linux中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名,有以下几种方法实现

find/usr/linux-name"*.h"|xargs-n50grepSYSCALL_VECTOR

grepSYSCALL_VECTOR/usr/linux/*.h|cut-d’:

’-f1|uniq>filename

find/usr/linux-name"*.h"-execgrep"SYSCALL_VECTOR"{}\;-print

  我用find/-namefilename|rm-rf,不成功,请问为什么不成功?

find/-namefilename-execrm-rf{}\;

find.-namefilename|rm-rf试一下{}表示你找出来的结果。

\;则相当于“宪法”,没什么说头,就是这么规定的,在-exec后面需要一个表示该命令终结的的符号。

可以在manfind中找到答案。

要让rm识别find的结果,如下:

find/-namefilename|xargsrm-rf

之所以find.-namefilename|rm-rf不通过,是因为rm命令不接受从标准输入传过来的指令

查找含特定字符串的文件

例如查找当前目录下含有"thestringyouwantfind…"字符串的文件:

$find.-typef-execgrep“thestringyouwantfind…”{};-print

  从根目录开始查tmpfile,一旦查到马上删除

find/-name"tmpfile"-execrm{}\;

  find的perm问题

请问一下以下命令什么意思?

关键是那个数字前的-,其他都还知道

find-name".*"-perm-007

我知道

find-name".*"-perm755

这个是用来查找权限位为755的隐藏文件

噢,对了还有,我上边的命令都省略了find的pathname参数find默认是查找当前工作目录的吗?

如果我用-ok替代-exec,那么还需要加上{}\;吗?

这个已经清楚,仍然需要,因为-ok只是-exec的提示模式,它只是多了一个确认操作的步骤,刚才没有读懂那几句E文的意思呵呵不好意思

-007是指查找所有用户都可读、写、执行的文件,要小心呀~~~

解释解释?

find-name".*"-perm-007和find-name".*"-perm777有区别吗?

-007是怎么来得呢?

不过有一个问题

我用find.-perm-100会列出当前目录.,这是为什么呢?

下面引用由explover在2002/10/0106:

15am发表的内容:

-007是指查找所有用户都可读、写、执行的文件,要小心呀~~~

-007是查找含其它用户(不同组,非属主)可读,写,执行的文件.并不一定要同组可读写,-是指最少权限为007.

下面引用由一颗小白菜在2002/10/0110:

16am发表的内容:

OK了,呵呵

不过有一个问题

我用find.-perm-100会列出当前目录.,这是为什么呢?

这种方法不会准确的找出目录的.-100是指权限至少是属主可运行.

在unix系统下,你可以拥有对目录文件的执行权你才可以进入一个目录.这便是目录文件被列出的原因.

find.-perm-001-print找到往往是目录文件.

我的意思当然不是使用这种方法来找目录,只不过不明白其中的-100意义了

那以此类推,是不是-010是指权限至少是owner同组可执行的吗?

也就是说其实这里的010和-是分开的,-表示一个至少的意思,而且010才是真正用来描述权限位的?

这样子就明白了谢谢你噢

  将find出来的东西拷到另一个地方?

find*.c-execcp‘{}’/tmp‘;’

如果有特殊文件,可以用cpio,也可以用这样的语法:

finddir-namefilename-print|cpio-pdvnewdir

  找出磁盘中某个大小范围内的文件

比如要查找磁盘中大于3M的文件:

find.-size+3000k-execls-ld{};

  如何用find查找某一天更改的文件?

可以使用这一行命令来实现:

A=`find~-print`|ls-l–full-time$A2>/dev/null|grep"Jun27"|grep1998

  使用find命令查找某个时间段的shell怎么写。

比如11点到12点的。

thanks

创建一个脚本judgetime,内容如下:

ls-l$*|awk‘{split($8,hour,":

");if((hour[1]>23||hour[1]<1)&&hour[1]<24)print}’

到要查找的目录下,运行

find./-name"*"-execjudgetime{}\;

注意时间格式为24小时制。

thankyou,如果我要精确到分钟呢

touch-t04241112starttemp#精确到12分钟

touch-t04241220endtemp#截止到12点20

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2