linux命令:find命令
http://blog.csdn.net/pipisorry/article/details/39831419
linux find命令语法
find [起始文件夹] 寻找条件 操作
find PATH OPTION [-exec COMMAND { } \;]
因为find命令会依据我们给的option,也就是寻找条件从我们给出的文件夹開始对当中文件及其下子文件夹中的文件进行递归搜索。
寻找条件
该命令中的寻找条件能够是一个用逻辑运算符 not、and、or 组成的复合条件。
(1) and:逻辑与,在命令中用“-a”表示,是系统缺省的选项。表示仅仅有当所给的条 件都满足时,寻找条件才算满足。比如:
find –name ’tmp’ –xtype c -user ’inin’% 该命令寻找三个给定条件都满足的全部文件
(2) or:逻辑或,在命令中用“-o”表示。
该运算符表示仅仅要所给的条件中有一个满足 时,寻找条件就算满足。
比如:
find –name ’tmp’ –o –name ’mina*’% 该命令查询文件名称为’tmp’或是匹配’mina*’的全部文件。
(3) not:逻辑非。在命令中用“!”表示。该运算符表示查找不满足所给条件的文件 。比如:
find ! –name ’tmp’% 该命令查询文件名称不是’tmp’的全部文件。
说明:当使用非常多的逻辑选项时。能够用括号把这些选项括起来。
为了避免Shell本身对括号引起误解,在话号前须要加转义字符“\”来去除括号的意义。
例:
find \(–name ’tmp’ –xtype c -user ’inin’ \)
查询条件option參数
-name ’字串’ 查找文件名称匹配所给字串的全部文件,字串内可用通配符 *、?、[ ]。
-lname ’字串’ 查找文件名称匹配所给字串的全部符号链接文件,字串内可用通配符 *、?、[ ]。
-gid n 查找属于ID号为 n 的用户组的全部文件。
-uid n 查找属于ID号为 n 的用户的全部文件。
-group ’字串’ 查找属于用户组名为所给字串的全部的文件。
-user ’字串’ 查找属于username为所给字串的全部的文件。
-empty 查找大小为 0的文件夹或文件。
-path ’字串’ 查找路径名匹配所给字串的全部文件,字串内可用通配符*、?、[ ]。
-perm 权限 查找具有指定权限的文件和文件夹,权限的表示能够如711。644。
-size n[bckw] 查找指定文件大小的文件,n 后面的字符表示单位。缺省为 b,代表512字节的块。 -size +500M文件大小大于500M
-type x 查找类型为 x 的文件,x 为下列字符之中的一个:
b 块设备文件;c 字符设备文件。d 文件夹文件;p 命名管道(FIFO)
f 普通文件。l 符号链接文件(symbolic links)。s socket文件。-xtype x 与 -type 基本同样,但仅仅查找符号链接文件。
以时间为条件查找
-amin n 查找n分钟曾经被訪问过的全部文件。
-atime n 查找n天曾经被訪问过的全部文件。
-cmin n 查找n分钟曾经文件状态被改动过的全部文件。
-ctime n 查找n天曾经文件状态被改动过的全部文件。
-mmin n 查找n分钟曾经文件内容被改动过的全部文件。
-mtime n 查找n天曾经文件内容被改动过的全部文件。
-print:将搜索结果输出到标准输出。
样例:在root以及子文件夹查找不包括文件夹/root/bin的,greek用户的,文件类型为普通文件的,3天之前的名为test-find.c的文件。并将结构输出,find命令例如以下:
find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -print
当然在这当中。-print是一个默认选项,我们不必刻意去配置它。
exec选项
-exec:对搜索的结构指令指定的shell命令。注意格式要正确:"-exec 命令 {} \;"
在}和\之间一定要有空格才行;
{}表示命令的參数即为所找到的文件;命令的末尾必须以“ \;”结束。
样例:对上述样例搜索出来的文件进行删除操作,命令例如以下:
find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -exec rm {} \;
find命令指令实例:
find . - name ‘main*’ - exec more {} \; % 查找当前文件夹中全部以main开头的文件。并显示这些文件的内容。
find . \(- name a.out - o - name ‘*.o’\)> - atime +7 - exec rm {} \; % 删除当前文件夹下全部一周之内没有被訪问过的a .out或*.o文件。
% “\(” 和 “\)” 表示括号(),当中的 “\” 称为转义符。之所以这样写是因为对 Shell 而言,(和)另有不同的含义。而不是这里的用于组合条件的用途。
% “-name a.out” 是指要查找名为a.out的文件;
% “-name ‘*.o’” 是指要查找全部名字以 .o 结尾的文件。这两个 -name 之间的 -o 表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件。
% find命令在当前文件夹及其子文件夹下找到这佯的文件之后,再进行推断,看其最后訪问时间 是否在7天曾经(条件 -atime +7),若是,则对该文件运行命令 rm(-exec rm {} \;)。
当中 {} 代表当前查到的符合条件的文件名称,\;则是语法所要求的。
% 上述命令中第一行的最后一个 \ 是续行符。当命令太长而在一行写不下时,可输入一个 \。之后系统将显示一个 >。指示用户继续输入命令。
find中使用正則表達式
find path -regex "xxx"
find path -iregex "xxx"
find . -regex '.*topic[0-9]+' #查找当前文件夹(包括子文件夹)下文件名称为topic+num的文件
使用演示样例
查找当前文件夹下大小>500M的文件及其大小
find . -size +500M | xargs du -ha
find . -size +100M ! -path "*git*" 文件路径中不包括git字样的文件
linux中find命令查找时不包括某些文件夹。find 命令忽略某个或多个子文件夹的方法
解决方式:
在linux中用find 进行查找的时候,有时候须要忽略某些文件夹不查找,能够使用 -prune 參数来进行过滤,要忽略的路径參数必须紧跟着搜索的路径之后,否则该參数无法起作用。
man find
...
-path pattern
File name matches shell pattern pattern. The metacharacters do
not treat `/' or `.' specially; so, for example,
find . -path "./sr*sc"
will print an entry for a directory called `./src/misc' (if one
exists). To ignore a whole directory tree, use -prune rather
than checking every file in the tree. For example, to skip the
directory `src/emacs' and all files and directories under it,
and print the names of the other files found, do something like
this:
find . -path ./src/emacs -prune -o -print
Note that the pattern match test applies to the whole file name,
starting from one of the start points named on the command line.
It would only make sense to use an absolute path name here if
the relevant start point is also an absolute path. This means
that this command will never match anything:
find bar -path /foo/bar/myfile -print
The predicate -path is also supported by HP-UX find and will be
in a forthcoming version of the POSIX standard.
...
也能够使用參数-wholename,只是不建议了
-wholename pattern
See -path. This alternative is less portable than -path.
-prune 使用这一选项能够使find命令不在当前指定的文件夹中查找。假设同一时候使用-depth选项,那么-prune将被find命令忽略。
还要注意 \( 前后都有空格
eg:
root@ubuntu:/tmp1#find ./ -type f #/tmp1文件夹下全部文件夹里面的全部文件
./file
./1/1.cpp
./2/2.cpp
root@ubuntu:/tmp1#find ./ -path ./1 -prune -o -type f -print #/tmp1中查找文件但忽略文件夹/1中的文件
./file
./2/2.cpp
root@ubuntu:/tmp1#find ./ \( -path ./1 -o -path ./2 \) -prune -o -type f -print #/tmp1中查找文件同一时候忽略文件夹/1 /2中的文件
./file
针对文件模式“./1”使用 -path(或者也能够-wholename) 測试。假设该模式已找到。-prune 可防止 find 下到该文件夹中。
find [-path ..] [expression] 在路径列表的后面的是表达式
-path ./1 -prune -o -print 是 -path ./1 -a -prune -o
布尔类型“-o”使 find 能够针对其它文件夹处理该命令的其余部分。因为每一个表达式之间有一个假设的隐式 and 运算符 (-a),因此,假设左側的表达式计算结果为 false,and 之后的表达式将不进行计算。因此须要 -o 运算符。
【详解:-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 相似假设 -path ./1为真。则 求值-prune , -prune 返回真。与逻辑表达式... -a -prune为真;否则不求值 -prune。与逻辑表达式为假。
假设 -path ./1 -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真。否则不求值 -print,或逻辑表达式为真。】
-prune
else
find忽略多个文件夹
圆括号表示表达式的结合。
查找某一确定文件,-name等选项加在-o 之后
eg:统计我写了多少行c/c++代码:
root@ubuntu:/media/E/mine/C++#find ./ \( -path ./SvdFeature -o -path ./SvdFeatureDemo -o -path ./SvdFeatureInfer -o -path ./testSVD \) -prune -o \( -name '*.c' -o -name '*.cpp' -o -name '*.h' -type f \)-print| xargs wc -l | more
...
16867 总用量
from:http://blog.csdn.net/pipisorry/article/details/39831419
ref:Linux文件查找命令find
linux命令:find命令的更多相关文章
- Linux下history命令用法
如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个用法. 使用 HISTTIMEFORMAT ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- 例解 Linux 下 Make 命令
Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...
- Linux 利用lsof命令恢复删除的文件
lsof命令 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需 ...
- Linux终端打印命令使用介绍
常用linux打印命令 日常使用中或shell脚本中linux终端打印命令有echo和printf. echo命令 功能说明:显示文字.语 法:echo [-ne][字符串]或 echo [--he ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
- Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)
1.文件搜索命令:locate [文件名] 在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少 例子:locate test.txt,就会显示文件名包含 test.txt的所 ...
- linux命令:crontab命令(转)
一.crond简介 二.crond服务 三.crontab命令详解 四.使用注意事项 linux系统是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作 ...
- linux常用的命令
Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debian 安装VMware或VirtualBox虚拟机.具体安 ...
随机推荐
- Pro ASP.NET Core MVC 第6版 第一章
目录 第一章 ASP.NET Core MVC 的前世今生 ASP.NET Core MVC 是一个微软公司开发的Web应用程序开发框架,它结合了MVC架构的高效性和简洁性,敏捷开发的思想和技术和.N ...
- document.mozFullScreen
非标准该特性是非标准的,请尽量不要在生产环境中使用它! 概述 返回一个布尔值,表明当前文档是否处于全屏模式. 语法 var isFullScreen = document.mozFullScreen ...
- JMeter怎样测试WebSocket,如何设置(一)
一.安装WebSocket取样器 1.从JMeter插件管理器官网下载:https://jmeter-plugins.org/ 把这6个jar包放到C:\JMeter\apache-jmeter-3. ...
- 微信浏览器播放音频的问题:preload属性
测试工具:ios微信. h5的Audio对象有个很重要的属性:preload;preload 属性规定是否在页面加载后载入音频.有4个值:auto - 当页面加载后载入整个音频meta - 当页面加载 ...
- CAD在一个点构造选择集(网页版)
主要用到函数说明: IMxDrawSelectionSet::SelectAtPoint 在一个点构造选择集.详细说明如下: 参数 说明 [in] IMxDrawPoint* point 点坐标 [i ...
- 用sed写配置IP脚本参数
#!/bin/bash#配置ip地址参数脚本NET=/etc/sysconfig/network-scripts/ifcfg-ens33if grep -E "BOOTPROTO=dhcp& ...
- putchar()和getchar()使用解析
1.putchar() 作用:输出一个字符 格式:putchar(c),c为输出参数 #include <stdio.h> int main() { char a1='A',b1='B'; ...
- Mysql Group by 分组取最小的实现方法
表结构如下图:
- PAT 1135 Is It A Red-Black Tree
There is a kind of balanced binary search tree named red-black tree in the data structure. It has th ...
- sublime3注册码
TwitterInc User License EA7E 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 ...