find用法

find [PATH] [option] [action]

与时间相关的参数:
-atime, -mtime, -ctime,分别是上次访问时间,上次修改时间和创建时间

以mtime为例:
-mtime n: n为数字,表示在几天前的“一天之内”修改过
-mtime +n: n天之前修改过,不包括n
-mtime -n: n天之内修改过,包括n
-newer filename: 比filename还要新的文件

时间的单位有:
s:second
m: minute
h: hour
d: day
w: week

举个栗子:找出今天有更新的python代码文件:
find . -mtime 0 -type f -name '*.py'

找出比某个文件还要新的python文件:
find . -newer group/tests/api_test/group_api_test.py -name '*.py'

找出今天有更新的python文件:
find . -mtime -1 -name '*.py'

与用户和组有关的参数:

-uid n:n为数字,时用户的账号id,即uid
-gid n: n为数字,即gid
-user name: name为用户名
-group name: name为组名
-nouser: 寻找文件不属于/ect/passwd中任何用户的文件
-nogroup: 寻找文件的组不属于/etc/passwd中任何组的文件

例子:
find ~ -group staff -user liaofeng -name '*.py'

与文件名称及权限相关

-name filename: 查找文件名匹配的文件
-size [+-]size: 超找比size还要大(小)的文件,大小的单位:c(byte),  
k(1024bytes),kb

-type TYPE:查找类型匹配的文件,f(一般文件),b/c(设备文件),d(目录),l(链接文件),s(socket文件)

-perm mode: 文件权限相等的文件
-perm -mode: 文件权限必须要包括mode的文件权限的文件
-perm +mode: 文件权限包含任意mode权限的文件

find /var -type s
find / -perm +7000

可进行的操作:
-exec commad

find . -name 'topic.py' -exec ls -l {} \;
";"需要转义,所以成了"\;"

其他:
-delete: 将找到的文件进行删除操作,如:find . -name '*.pyc'
-depth n:文件目录借口的层级,如果文件跟起始目录在同一个层级,depth为1,例子: find . -name 'topic.py' -depth 3 -exec ls -l {} \;
-empty:如果文件或者目录为空,返回True: find . -empty -name '*.py'
-maxdepth n: 文件最深藏在起始目录下的n层:
-mindepth n: ...


操作符(operators):
上面所有介绍的都是操作的参数,这些参数可以通过操作符进行操作。好比,数字的1和数字的2都是参数,可以用加好操作符进行操作:1+2

(expression): 如果括号内的表达式都为true,则返回:
find . (-name '*.py' -empty): find . \( -name '*.py'  -empty \),注意括号要转义,而且括号还要保持一个空格

! expression: 非操作: find . \! \(-name '*.py' -empty \),注意"!"需要转义

-not expression: 同上

expression1 -and expression2: <==> expression1 expression2
expression1 -or expression2:

find / \( -newer ttt -or -user wnj \) -print


你可能感兴趣的:(find)