日期:2014-05-16  浏览次数:20561 次

linux find命令
linux find typelinux find用法(转)

前言:关于find命令
由于find具有健壮的功效,所以它的选项也很多,其中大局限选项都值得我们花时间来剖析一下。尽管体例中含有网络文件体例( NFS),find命令在该文件体例中异样有用,只你具有相应的权限。
在运转一个格外消耗资源的find命令时,很多人都倾向于把它放在后台实践,由于遍历一个大的文件体例可以或许会耗损很长的时间(这里是指30G字节以上的文件体例)。

一、find 命令格式
1、find命令的一般形式为;

find ponhniime -options [-print -exec -ok ...]

2、find命令的参数;

ponhniime: find命令所查找的目录途径。例如用.来表示现时目录,用/来表示体例根目录。
-print: find命令将匹配的文件输入到准则输入。
-exec: find命令对匹配的文件实践该参数所给出的shell命令。相应命令的形式为icommthe actualdi { } \;,你知道linux。注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安好的形式来实践该参数所给出的shell命令,在实践每一个命令之前,都会给出提示,让用户来肯定能否实践。

3、find命令选项
-niime
服从文件名查找文件。
-perm
服从文件权限来查找文件。
-prune
利用这一选项可以使find命令不在现时指定的目录中查找,倘若同时利用-depth选项,那么-prune将被find命令轻视。
-user
服从文件属主来查找文件。看着linux文件系统。
-group
服从文件所属的组来查找文件。看看typelinux。
-mtime -n +n
服从文件的更改时间来查找文件, – n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-onime和-ctime 选项,但它们都和-m time选项。
-nogroup
查找无有用所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser
查找无有用属主的文件,即该文件的属主在/etc/pbumwd中不存在。
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
b – 块建筑文件。chinaunix论坛。
d – 目录。
c – 字符建筑文件。
p – 管道文件。
l – 符号链接文件。
f – 日常平凡文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找现时目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件体例中的文件,这些文件体例类型通常可以在配置文件/etc/fststomhvach中找到,该配置文件中包括了本体例中相关文件体例的新闻。
-mount:在查找文件时不跨越文件体例mount点。
-follow:倘若find命令遇到符号链接文件,debian 静态ip。就跟踪至链接所指向的文件。
-cpio:对匹配的文件利用cpio命令,将这些文件备份到磁带建筑中。

另外and下面三个的区别:
-iimin n
查找体例中末了N分钟拜谒的文件
-onime n
查找体例中末了n*24小时拜谒的文件
-cmin n
查找体例中末了N分钟被转变文件形态的文件
-ctime n
查找体例中末了n*24小时被转变文件形态的文件
-mmin n
查找体例中末了N分钟被转变文件数据的文件
-mtime n
查找体例中末了n*24小时被转变文件数据的文件

4、利用exec或ok来实践shell命令
利用find时,只消把想要的操作写在一个文件里,就可以用exec来团结find查找,很利便的
在有些操作体例中只允许-exec选项实践诸如l s或ls -l这样的命令。大大都用户利用这一选项是为了查找旧文件并删除它们。建议在真正实践rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
exec选项后背跟随着所要实践的命令或脚本,然后是一对儿{ },一个空格和一个\,末了是一个分号。为了利用exec选项,必必要同时利用print选项。倘若考证一下find命令,会发现该命令只输入从现时途径起的绝对途径及文件名。win2003 iis。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中

# find . -type f -exec ls -l { } \;
-rw-r–r– 1 root root 2003-02-25 ./conf/httpd.conf
-rw-r–r– 1 root root 2003-02-25 ./conf/magic
-rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README

下面的例子中,find命令匹配到了现时目录下的所有日常平凡文件,你知道find用法(转)。并在-exec选项中利用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec rm { } \;

记住:在shell中用任何方式删除文件之前,应领先巡视相应的文件,肯定要小心!当利用诸如mv或rm命令时,学会win2003企业版 64位。可以利用-exec选项的安好形式。它将在对每个匹配到的文件举办操作之前提示你。
在下面的例子中, find命令在现时目录中查找所有文件名以.LOG末了、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。

$ find . -niime "*.conf" -mtime +5 -ok rm { } \;
< rm … ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除。
任何形式的命令都可以在-exec选项中利用。
在下面的例子中我们利用grep命令。find命令首先匹配所有文件名为“ pbumwd*”的文件,例如pbumwd、pbumwd.old、pbumwd.bak,然后实践grep命令看看在这些文件中能否存在一个siim用户。

# find /etc -niime "pbumwd*" -exec grep "siim" { } \;
siim:x:501:501::/usr/siim:/rubbisexualsh bisexualn/gonhering

二、find命令的例子;

1、查找现时用户主目录下的所有文件:
下面两种手段都可以利用

$ find $HOME -print
$ find ~ -print

2、让现时目录中文件属主具有读、写权限,win2003企业版密钥。并且文件所属组的用户和其他用户具有读权限的文件;

$ find . -type f -perm 644 -exec ls -l { } \;

3、为了查找体例中所有文件长度为0的日常平凡文件,并列出它们的无缺途径;

$ find / -type f -size 0 -exec ls -l { } \;

4、查找/var/logs目录中更改时间在7日以前的日常平凡文件,并在删除之前扣问它们;

$ find /var/logs -type f -mtime +7 -ok rm { } \;

5、为了查找体例中所有属于root组的文件;

$find . -group root -exec ls -l { } \;
-rw-r–r– 1 root root 595 10月 31 01:09 ./fie1

6、find命令将删除当目录中拜谒时间在7日以来、含罕见字后缀的commerciisministronive.log文件。
该命令只搜检三位数字,对比一下unix网络编程 pdf。所以相应文件的后缀不要逾越999。