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
与时间相关的参数:
-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