系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > Linux find命令

Linux find命令常见用法汇总(2)

时间:2014-12-04 10:34:34 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20141204/31867.html 手机查看 评论

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

  # find 。 -type f -exec ls -l {} \;

  -rw-r–r– 1 root root 34928 2003-02-25 。/conf/httpd.conf

  -rw-r–r– 1 root root 12959 2003-02-25 。/conf/magic

  -rw-r–r– 1 root root 180 2003-02-25 。/conf.d/README

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

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

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

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

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

  查询当天修改过的文件

  [root@book class]# find 。/ -mtime -1 -type f -exec ls -l {} \;

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

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

  [root@book class]# find 。/ -mtime -1 -type f -ok ls -l {} \;

  《 ls … 。/classDB.inc.php 》 ? y

  -rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 。/classDB.inc.php

  [root@book class]# find 。/ -mtime -1 -type f -ok ls -l {} \;

  《 ls … 。/classDB.inc.php 》 ? n

  [root@book class]#

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

  查询并交给awk去处理

  [root@book class]# who | awk ’{print $1”\t“$2}’

  cnscn pts/0

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

  awk—grep—sed

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

  文件系统

  sda2

  sda1

  [root@book class]# 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 grep SYSCALL_VECTOR

  B) grep SYSCALL_VECTOR /tmp/*.h | cut -d’:‘ -f1| uniq 》 filename

  C) find /tmp -name “*.h” -exec grep “SYSCALL_VECTOR” {} \; -print

  2)find / -name filename -exec rm -rf {} \;

  find / -name filename -ok rm -rf {} \;

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

  find 。 -size +3000k -exec ls -ld {} ;

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

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

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

  find dir -name filename -print | cpio -pdv newdir

  6)查找2004-11-30 16:36:37时更改过的文件

  # A=`find 。/ -name “*php”` | ls -l –full-time $A 2》/dev/null | grep “2004-11-30 16:36:37”

  Linux-all, Linux | No Comments »

  find 实例

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

  find /usr/linux -name ”*.h“ | xargs -n50 grep SYSCALL_VECTOR

  grep SYSCALL_VECTOR /usr/linux/*.h | cut -d’:’ -f1 | uniq 》 filename

  find /usr/linux -name ”*.h“ -exec grep ”SYSCALL_VECTOR“ {} \; -print

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

  find / -name filename -exec rm -rf {} \;

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

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

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

  find / -name filename |xargs rm -rf

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

  查找含特定字符串的文件

  例如查找当前目录下含有”the string you want find…“字符串的文件:

  $find 。 -type f -exec grep “the string you want find…” {} ; -print

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

  find / -name ”tmpfile“ -exec rm {} \;

  find 的perm问题

  请问一下以下命令什么意思?关键是那个数字前的-,其他都还知道

  find -name ”.*“ -perm -007

  我知道

  find -name ”.*“ -perm 755

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

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

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

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

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

  解释解释?

  find -name ”.*“ -perm -007 和 find -name ”.*“ -perm 777 有区别吗?

  -007是怎么来得呢?

  不过有一个问题

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

  下面引用由explover在 2002/10/01 06:15am 发表的内容:

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

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

  下面引用由一颗小白菜在 2002/10/01 10:16am 发表的内容:

  OK了, 呵呵

  不过有一个问题

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

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

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

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

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

  那以此类推,是不是 -010是指权限至少是owner同组可执行的吗?也就是说其实这里的010和-是分开的,-表示一个至少的意思,而且010才是真正用来描述权限位的?

  这样子就明白了 谢谢你噢

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

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

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

  find dir -name filename -print | cpio -pdv newdir

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

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

  find 。 -size +3000k -exec ls -ld {} ;

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

官方交流群 软件收录