当前位置: > Linux命令 >

linux下find命令和文件的三种时间

时间:2016-05-22 23:33来源:linux.it.net.cn 作者:IT
 Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。



1.命令参数:
  
  pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
  -print: find命令将匹配的文件输出到标准输出。 
  -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。 
  -ok:   和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在  执行每一个命令之前,都会给出提示,让用户来确定是否执行。

2.命令选项:
  
-name   按照文件名查找文件。
-perm   按照文件权限来查找文件。
-prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用

-depth选项,那么-prune将被find命令忽略。
-user   按照文件属主来查找文件。
-group  按照文件所属的组来查找文件。
-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser  查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。
-type  查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-

depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:
  
-amin n   查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

#-print 将查找到的文件输出到标准输出
#-exec    command    {} \;       -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户 

==================================================== -name    filename   

            #查找名为filename的文件
-perm                         #按执行权限来查找
-user     username              #按文件属主来查找
-group groupname              #按组来查找
-mtime    -n +n                 #按文件更改时间来查找文件,-n指n天以内,

+n指n天以前
-atime     -n +n                #按文件访问时间来查GIN: 0px">-perm 
       

                   #按执行权限来查找
-user     username              #按文件属主来查找
-group groupname              #按组来查找
-mtime    -n +n                 #按文件更改时间来查找文件,-n指n天以内,

+n指n天以前
-atime     -n +n                #按文件访问时间来查找文件,-n指n天以内,

+n指n天以前 
-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旧的文件
-mount                        #查文件时不跨越文件系统mount点
-follow                       #如果遇到符号链接文件,就跟踪链接所指的文


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

带设备中
-prune                        #忽略某个目录 

3.linux下find命令的用法
1. 基本用法:
     1.find / -name 文件名  
       find ver1.d ver2.d -name '*.c' -print    查找ver1.d,ver2.d *.c文件并打印 
     2.find . -type d -print   从当前目录查找,仅查找目录,找到后,打印路径名。可用于打印目录结构。
      
2. 无错误查找:

      find / -name access_log 2 >/dev/null
       
3. 按尺寸查找:

      find / -size 1500c (查找1,500字节大小的文件,c表示字节)
      find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)    
      find / -size +1500c (查找小于1,500字节大小的文件,-表示小于) 
          
4. 按时间:

      find / -amin n 最后n分钟 
      find / -atime n 最后n天
      find / -cmin n 最后n分钟改变状态
      find / -ctime n 最后n天改变状态
       
5. 其它:

      find / -empty 空白文件、空白文件夹、没有子目录的文件夹
      find / -false 查找系统中总是错误的文件
      find / -fstype type 找存在于指定文件系统的文件,如type为ext2
      find / -gid n 组id为n的文件
      find / -group gname 组名为gname的文件
      find / -depth n 在某层指定目录中优先查找文件内容
      find / -maxdepth levels 在某个层次目录中按递减方式查找

6. 逻辑

      -and 条件与 -or 条件或

7. 查找字符串

      find . -name '*.html' -exec grep 'mailto:'{} 



二.在windows下,一个文件有:创建时间、修改时间、访问时间。而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。

mtime:文件最近内容修改的时间
ctime:文件最近属性和权限修改的时间
atime:文件最近被访问的时间
  
1.ls -l filename(ls默认显示的是mtime)
  
  -rw-rw-r-- 1 lawrance lawrance 27 Oct  5 02:09 filename
  
2.ls -l --time=ctime filename 

  -rwxr-xr-x 1 lawrance lawrance 27 Oct  6 02:50 filename
  
3.ls -l --time=atime filename 

  -rw-rw-r-- 1 lawrance lawrance 27 Oct  6 02:30 filename


另外,可以格式化输出文件的三种时间,如:

1.find . -name file -printf "%AY-%Am-%Ad %AH:%AM:%AS"
2.find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"
3.find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"




(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容