Linux find command

LINUX 下查找指定时间的所有文件

find. -name "*.txt" -mtime -1

//以上为1小时以内的当前目录内修改的所有为txt格式的文件. 其中-1为1小时以内, +1为1小时之前

find

. -mmin -10 //查找10分钟内当前目录内修改的所有文件

 find . -mmin +10 //查找1小时内,10分钟外当前目录内修改的所有文件

//-mmin为查找1小时内的按照分钟计算的修改文件

find . -newer a.txt //查找10分钟内当前目录内修改的所有文件

//查找当前目录下(递归子目录)的所有修改时间在a.txt之后(所以文件更新)的文件和目录

不常用指令

find命令用于查找文件和目录,任何位于参数之前的字符串都将被视为欲查找的目录。

find可以指定查找条件如名称,类型,时间,文件大小,权限和所有者查找,针对多个条件进行与或非的逻辑运算。我们可以控制find的查找的行为,还可以和其他命令组合使用。

find

find .

find . -print

三者等效, 查找当前目录下所有的文件和目录(递归子目录),以每行一个文件或者目录的形式列举出,不包含隐藏文件

findlib opt bin

同上,查找指定的多个目录(lib/opt/bin)

(1) 指定查找条件

1) 按名称查找

find. -name readme.txt

查找当前目录下(递归子目录)的所有名为readme.txt的文件

find. -name \*.txt

find. -name “*.txt”

查找当前目录下(递归子目录)的所有名称以.txt结尾的文件,注意*号的写法,需要前面加\或者放到双引号中

find. -iname \*.txt

默认find是区分大小写的,如果不想区分大小写,请使用-iname替代-name,如上则”abc.TXT”将被查找到

2) 按类型查找

find. -type d

查找当前目录下(递归子目录)的所有目录

find. -type f

查找当前目录下(递归子目录)的所有文件

find. -type l

查找当前目录下(递归子目录)的所有符号链接

3) 按时间查找

1. 以小时为单位的时间

find命令三个选项用于按照时间查找,单位都是小时:

mtime

— 文件内容上次修改时间

atime

— 文件被读取或访问的时间

ctime

— 文件状态变化时间

这三个选项都需要配置一个n值使用,可以是-n / n / +n:

-n 小于n

n 正好与 n 相等

+n 大于n

find. -mtime -1

查找当前目录下(递归子目录)的所有1小时内修改的文件和目录

find. -mtime +1

查找当前目录下(递归子目录)的所有修改时间超过1小时的文件和目录

find. -mtime 1

查找当前目录下(递归子目录)的所有恰好在1小时前修改的文件和目录

2. 以分钟为单位的时间

用法和*time类似,mmin、amin和cmin 的不同在于单位时间是分钟,用于查找在不到1小时的时间内变化了的文件和目录

find. -mmin -10

查找当前目录下(递归子目录)的所有10分钟内修改的文件和目录

find. -mmin +20

查找当前目录下(递归子目录)的所有20分钟外1小时内修改的文件和目录

3. 与特定的文件比较

-newer,-anewer和-cnewer选项用于查找与特定的文件比较的已修改或访问过的文件,类似mtime,atime和ctime

-newer指内容最近被修改的文件

-anewer指最近被读取过的文件

-cnewer指状态最近发生变化的文件

find. -newer a.txt

查找当前目录下(递归子目录)的所有修改时间在a.txt之后(所以文件更新)的文件和目录

4) 按文件大小查找

-size 选项用于查找满足指定的大小条件的文件(注意不查找目录), +表示大于, -表示小于, 没有+1表示正好等于。文件大小的单位可以是字节(用c表示), kb(用k表示)。

find. -size -100c

查找当前目录下(递归子目录)的所有文件大小小于100字节的文件

find. -size +100k

查找当前目录下(递归子目录)的所有文件大小大于100k的文件

find. -size 0

查找当前目录下(递归子目录)的所有文件大小为0的文件

-empty 查找空文件和空文件夹, 和-size 0不同的在于-size 0 只查找空文件,或者说-empty -type f 等同于-size 0 :

find. -empty

查找当前目录下(递归子目录)的所有文件大小为0的文件和空文件夹

find. -empty -type f

查找当前目录下(递归子目录)的所有文件大小为0的文件

find. -empty -type d

查找当前目录下(递归子目录)的所有空目录

5) 按权限和所有者查找

find. -perm 777

查找当前目录下(递归子目录)的所有权限为777的文件和目录

find. -perm -u=rwx

查找当前目录下(递归子目录)的所有user权限为rwx的文件和目录

find. -perm -ug=x

查找当前目录下(递归子目录)的所有user和group权限为x的文件和目录

find. -user sky

查找当前目录下(递归子目录)的所有user为sky的文件和目录

find. -group users

查找当前目录下(递归子目录)的所有group为users的文件和目录

(2) 查找条件的逻辑运算

1. 逻辑与

find. -name “*.java” -size -mmin -10

find. -name “*.java” -a -size -mmin -10

查找当前目录下(递归子目录)的所有名为*.java并且修改时间在10分钟之内的文件,-a是默认选项

2. 逻辑或

find. -name “*.class” -o -name “*.jar”

查找当前目录下(递归子目录)的所有名为*.class或者*.jar的文件和目录

3. 逻辑非

find. ! -user sky

查找当前目录下(递归子目录)的所有user不是sky的文件和目录

(3) 控制查找的行为

find. -maxdepth 3 -name “*.txt”

查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不超过3层

find. -maxdepth 1 -name “*.txt”

查找当前目录下(不递归子目录,因为maxdepth为1)的所有名为*.txt的文件

find. -mindepth 3 -name “*.txt”

查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不低于3层

find. -mindepth 1 -name “*.txt”

查找当前目录下的子目录中(递归子目录)的所有名为*.txt的文件,不包含当前目录

find. -depth -name “*.txt”

查找当前目录下(递归子目录)的所有名为*.txt的文件,每个目录都是先在目录中进行查找,然后才继续查找其子目录

(4)find和其他命令的组合

find. -name “*.jar” -exec ls -l {} \;

find. -name “*.jar” -ls

查找当前目录下(递归子目录)的所有*.jar文件并使用ls -l列出详细信息

find. -name “*.java” -exec grep HashMap {} \;

查找当前目录下(递归子目录)的所有的含有”HashMap”字样的*.java文件

find. -name “*.sh” -exec mv {} backup \;

查找当前目录下(递归子目录)的所有的*.sh文件并移动到backup目录中

以下转自:http://luojiaofei.blog.163.com/blog/static/14360348920114611233559/

我们经常要在日常的工作中查找文件,要说linux下最强大的文件查找工具,非find莫属。find可以从文件名、读取修改时间、大小、类型等等来筛选文件,可以完成日常几乎所有的查找需求。

来看一个简单的例子:

find/tmp/ -name ‘galeki*’

意思就是在/tmp目录下找出以“galeki”开头的文件,-name指出是对文件名进行筛选,是不是很简单明了?除了文件名,find还有更强大的筛选条件:

1.时间:

参数 意义

-atime

n 上一次存取时间在n*24小时前以内的文件

-ctime

n 上一次状态改变在n*24小时前以内的文件

-mtime

n 上一次修改时间在n*24小时前以内的文件

-newer

file 比file所指的文件还要新的文件

2.大小:

参数 意义

-size

n[bkMG] 大小为n(b为比特,k为KB,M为MB,G为GB)的文件

3.所有者:

参数 意义

-user

name 所有者用户名称是name的文件

-group

name 所有者用户组群名称是name的文件

例子:

find

/tmp/ -name ‘sess*’ -mtime 1   #在/tmp目录下找到所有以’sess’开头、并且在一个小时以内修改过的文件

find

./ -name ‘*.zip’ -size 546k       #在当前目录下找到所有546KB的zip压缩包文件

find

/tmp/ -user ‘galeki’               #在/tmp目录下找到所有所有者为galeki的文件

另外,还可以用”+”、”-“来进一步修饰时间和大小的条件:

find

src/ -mtime +2            #找出src目录下上一次修改时间在2天以前的文件

find

download/ -size +50M    #在download目录下找出大于50M的文件

光找出文件还不够,我们还要对找出的文件进行处理才有意义,一般来讲可以把find的查找结果传递给其他的命令做进一步处理。find本身也提供了许多处理动作的选项。

常用的处理动作:

参数 意义

-print

打印出找出文件的完整地址,一个文件一行

-delete

删除找出的文件

-execcommand {} \;

对每一个找到的文件执行command命令,

并用文件替换”{}”,“\;”是固定的结束符。

例子:

find

/tmp/ -ctime +7 -delete            #删除/tmp目录下一周以前创建的文件

find

./ -name ‘*.unk’ -exec file {} \;   #找出当前文件夹下后缀是unk的文件,并用file命令显示每个文件的文件类型

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

查找并打包:

find. -name “*.txt” -mtime -1 | xargs -n 100 tar -rvf 20110902.tar

//查找当前文件夹下所有1天内修改的txt文件并打包为20110902.tar

find./ -name “*[cC][aA][mM][eE][rR][aA]*.*” -ok tar -czvf my.tar.gz {} \

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

以下转自:http://www.linuxsir.org/main/?q=node/137

一、find 命令格式

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

findpathname -options [-print -exec -ok ...]

2、find命令的参数;

pathname:

find命令所查找的目录路径。例如

style="color: #888888;">

#ff0000;">用

style="color: #000000;">.来表示当前目录,用

#000000;">/来表示系统根目录。

-print: find命令将匹配的文件输出到标准输出。

-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。

-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

4、使用find查找文件的时候怎么避开某个文件目录

比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件

find/usr/sam -path "/usr/sam/dir1" -prune -o -print

find

[-path ..] [expression] 在路径列表的后面的是表达式

-path

“/usr/sam” -prune -o -print 是-path“/usr/sam” -a -prune -o

-print的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path “/usr/sam” 为真,则求值 -prune ,

-prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path “/usr/sam” -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。

这个表达式组合特例可以用伪码写为

if-path "/usr/sam"  then

-prune

else

-print

避开多个文件夹

find/usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print

圆括号表示表达式的结合。

\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

查找某一确定文件,-name等选项加在-o 之后

#find/usr/sam  \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容