`
virues
  • 浏览: 72533 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

liunx find用法 详解 + 实例

 
阅读更多
[b][b]一、Linux中find常见用法示例

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


#-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 #忽略某个目录


====================实例================================


$find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示
$find . -name "*.txt" -print
$find . -name "[A-Z]*" -pri26nbsp; #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
$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 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print 打印目录结构
$find . ! -type d -print 打印非目录文件

find /usr/include -name '*.h' -exec grep AF_INEF6 {} \;

因grep无法递归搜索子目录,故可以和find相结合使用。 在/usr/include 所有子目录中的.h文件中找字串AF_INEF6


$find . -type l -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*" -exec grep "cnscn" {} \; #看是否存在cnscn用户
$find . -name "yao*" | xargs file
$find . -name "yao*" | xargs echo "" > /tmp/core.log
$find . -name "yao*" | xargs chmod o-w
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/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 -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.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 -name tmp.txt -exec cat {} \;
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 . -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下find命令的用法
1. 基本用法:
  find / -name 文件名
  find ver1.d ver2.d -name '*.c' -print 查找ver1.d,ver2.d *.c文件并打印
  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:'{}
[/b][/b]
分享到:
评论

相关推荐

    linux下find命令实例

    ### Linux 下 find 命令实例详解 #### 概述 `find` 是 Linux 和类 Unix 系统中一个非常强大的文件查找工具。通过 `find` 命令,用户可以基于多种条件来搜索文件系统中的文件或目录,如名称、权限、所有者、组、...

    Linux文本查找命令find的用法详解

    以下是一些使用`find`命令的实例: 1. 查找一级目录下名为`1.txt`的文件:`find . -maxdepth 1 -name "1.txt"` 2. 查找当前目录下所有.txt结尾的文件:`find . -maxdepth 1 -name "*.txt"` 3. 查找以数字命名的txt...

    linux正则表达式详解

    本文将详细介绍Linux正则表达式的使用方法及其背后的逻辑。 #### 正则表达式基础 1. **通配符**: - `*`:匹配零个或多个前导字符。 - `?`:匹配单个任意字符。 - `[]`:指定一个字符集中的任意单个字符。 2. ...

    刘艳涛版LinuxShell命令行及脚本编程实例详解(含mobi阅读器)

    《刘艳涛版Linux Shell命令行及脚本编程实例详解》从基础命令讲起,如`ls`、`cd`、`pwd`等,这些命令是用户熟悉和使用Linux系统的第一步。作者刘艳涛在书中细致地讲解了这些命令的用法,使初学者能够迅速掌握Linux...

    Linux基本操作命令详解及实例

    内容概要:本文详细介绍了 Linux 操作系统中常用的基础命令及其使用方法。内容涵盖文件及目录管理、系统信息查询、文件内容显示与处理、通配符使用、输入/输出重定向与管道等。具体命令包括:ls、pwd、cd、touch、...

    Linux文件查找命令之find讲解.doc

    Linux下的`find`命令是系统...总的来说,`find`命令是Linux系统中一个强大且灵活的工具,熟悉并熟练掌握其用法对于提升Linux系统的文件管理效率至关重要。无论是日常文件查找还是系统维护,`find`都能提供极大的帮助。

    linux常用命令集详解大全CHM

    在IT领域,Linux操作..."Linux常用命令全集.CHM"提供了全面的指南,涵盖了各种命令的用法和实例,对于初学者和有经验的用户来说都是宝贵的参考资源。通过系统学习和实践,你将能够更自如地在Linux世界中探索和工作。

    linuxkill命令参数及用法详解借鉴.pdf

    Linux kill 命令参数及用法详解 Linux kill 命令是 Linux 操作系统中一个非常重要的命令,用于中止一个进程。该命令可以将指定的信息送至程序,预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,...

    unix下find命令详解 之前在网上收集的,有实例

    `find`命令是UNIX和Linux操作系统中用于查找文件的强大工具,它可以根据各种条件搜索文件,例如文件名、权限、属主、属组、修改时间等。以下是对`find`命令的详细解释及其常见用法: **基本语法:** ```bash find ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不...

    linux grep命令详解_linux_grep_

    Linux中的`grep`命令是文本处理工具中的重要一员,它在系统管理和日常工作中发挥着巨大的作用。`grep`源自于“global regular ...希望这份`grep`命令详解能帮助初学者快速入门,并逐渐精通Linux文本处理技巧。

    Linux 系统命令及其使用详解

    本文将深入讲解一些常用的Linux系统命令及其使用方法。 1. **ls**:列出目录内容。例如,`ls -l`将显示当前目录下的所有文件和目录的详细信息,包括权限、所有者、大小等。 2. **cd**:改变工作目录。如`cd /home/...

    Linux-系统命令大全与详解.doc

    本文档将详细介绍 Linux 系统命令的使用方法、参数设置、实例演示等内容。 cat 命令 cat 命令是 Linux 中最基本的命令之一,用于查看文件的内容。cat 命令的基本语法为:`cat [选项] 文件名`。其中,选项可以是 `-...

    Linux命令详解精品手册

    这本"Linux命令详解精品手册"涵盖了这些命令的使用方法、参数选项以及实例,深入浅出地讲解了如何在Linux环境中高效工作。通过学习和实践,用户不仅可以提升日常操作效率,还能为更高级的系统管理和脚本编写打下坚实...

    [Linux命令详解词典].施威铭研究室.扫描版

    《Linux命令详解词典》是施威铭研究室编著的一本关于Linux操作系统命令的权威指南,这本书深入浅出地介绍了Linux系统中的各种命令及其用法。Linux命令是Linux操作系统中进行系统管理、文件操作、网络通信等任务的...

    [linux下的find文件查找命令与grep文件内容查找命令]linuxfindgrep.docx

    ### Linux下的find与grep命令详解 #### 一、find命令详解 **find** 命令是Linux系统中用于在指定目录树下查找文件的强大工具。...掌握这两个命令的使用方法对于高效管理Linux系统中的文件至关重要。

    grep find 命令用法.doc

    grep 和 find 命令用法详解 grep 命令是 Unix/Linux 系统中一个功能强大且常用的命令,主要用于在文件中搜索特定的内容,并将含有这些内容的行标准输出。grep 命令的全称是 Global Regular Expression Print,表示...

    Linux 中文件查找技术大全

    ### Linux中的文件查找技术——详解find命令 #### 一、引言 在Linux系统中,文件查找是一项极为常见的操作需求。对于系统管理员或是开发者而言,能够高效地定位到特定文件至关重要。本文将全面介绍`find`命令的...

    Linux下源码包安装Swoole及基本使用操作图文详解

    本文将详细介绍如何在Linux环境中通过源码包安装Swoole扩展,并提供基本使用操作的图文教程。 首先,需要从PECL扩展源码包中下载Swoole的源码包,下载地址为***。在下载之前,要确认PHP的版本,以确保选择合适版本...

    Linux上的文件搜索命令实例详解

    本文将深入探讨两种主要的文件搜索命令:`locate`和`find`,并提供详细的实例解析。 首先,我们来看`locate`命令。`locate`是一个快速查找文件的工具,它通过预建的数据库来查找文件,而不是遍历整个文件系统。在...

Global site tag (gtag.js) - Google Analytics