linuxfind排除⽬录,Linuxfind命令详解,查时⾮管道排除⽬录find是linux 命令,它将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、⼤⼩、权限等不同资讯的组合,只有完全相符的才会被列出来。find 根据下列规则判断 path 和 expression,在命令列上第⼀个 – ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。
find命令的参数
pathname: find命令所查的⽬录路径。例如⽤.来表⽰当前⽬录,⽤/来表⽰系统根⽬录。
-print: find命令将匹配的⽂件输出到标准输出。
-exec: find命令对匹配的⽂件执⾏该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作⽤相同,只不过以⼀种更为安全的模式来执⾏该参数所给出的shell命令,在执⾏每⼀个命令之前,都会给出提⽰,让⽤户来确定是否执⾏。
# -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">
-ctime -n +n #按⽂件创建时间来查⽂件,-n指n天以内,+n指n天以前
-nogroup #查⽆有效属组的⽂件,即⽂件的属组在/etc/groups中不存在
-nouser #查⽆有效属主的⽂件,即⽂件的属主在/etc/passwd中不存
-
newer f1 !f2 #⽂件,-n指n天以内,+n指n天以前
-empty #空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p,-path p #路径名称符合 p 的档案,ipath 会忽略⼤⼩写
-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 #使查在进⼊⼦⽬录前先⾏查完本⽬录
-newer file1 ! file2 #查更改时间⽐f1新但⽐f2旧的⽂件
-
type b/d/c/p/l/f #查是块设备/⽬录/字符设备/管道/符号链接/普通⽂件
-size n[c] #查长度为n块[或n字节]的⽂件
-depth #使查在进⼊⼦⽬录前先⾏查完本⽬录
-fstype #查位于某⼀类型⽂件系统中的⽂件,这些⽂件系统类型通常可 在/etc/fstab中到
-follow #如果遇到符号链接⽂件,就跟踪链接所指的⽂件
-cpio #对匹配的⽂件使⽤cpio命令,将这些⽂件备份到磁带设备中。
-mount #查⽂件时不跨越⽂件系统mount点
-prune #忽略某个⽬录,使⽤这⼀选项可以使find命令不在当前指定的⽬录中查,如果同时使⽤-depth选项,那么-prune将被find命令忽略。
现在来详细说说-prune
find [-path ..] [expression] 在路径列表的后⾯的是表达式
-
path "/usr/kinggoo" -prune -o -print 是 -path "/usr/kinggoo"-a -prune -o -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/kinggoo" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/kinggoo" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。如果要加其他选项需要加在-o之后(下⾯会有例⼦)
find /usr/kinggoo -path "/usr/kinggoo/T" -prune -o -print
这个表达式组合特例可以⽤伪码写为
if -path "/usr/kinggoo/T" then
-prune
else
-print
避开多个⽂件夹
find /usr/kinggoo \( -path /usr/kinggoo/T -o -path /usr/kinggoo/file1 \) -prune -o -print
圆括号表⽰表达式的结合。
\ 表⽰引⽤,即指⽰ shell 不对后⾯的字符作特殊解释,⽽留给 find 命令去解释其意义
详细例⼦:
[root@kinggoo svnconf]# find ../svnconf \( -path ../svnconf/qiyemoban \) -prune -o -print
../svnconf
../svnconf/txt
../svnconf/index.html
../f
../svnconf/index.html.bk
../svnconf/f
../svnconf/NULL
.
./svnconf/svntomail.sh
../svnconf/svntomail.sh.bk
../svnconf/qiyemoban.zip
find查命令的使用../svnconf/f
发现了吧 上⾯没有qiyemoban这个⽂件夹了,其实他没有被打印出来,
[root@kinggoo svnconf]# ls
f index.html NULL qiyemoban svntomail.sh txt
f index.html.f qiyemoban.zip svntomail.sh.bk
查某⼀确定⽂件,-name、-type等选项加在-o 之后
例:
[root@kinggoo svnconf]# find ../svnconf \( -path ../svnconf/qiyemoban \) -prune -o -name "txt" -print
.
./svnconf/txt
[root@kinggoo svnconf]# find ../svnconf \( -path ../svnconf/qiyemoban \) -prune -o -type d -print
../svnconf # 当然只有⾃⼰是⽬录了,为了演⽰使⽤的是../上⼀级在指定当前⽬录 只是我懒。跟find正常命令⼀样即可望有帮助!
- THE END -
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论