相关文章推荐

使用 -regex 时有一点要注意: -regex 不是匹配文件名,而是匹配 完整的文件名 (包括路径)。

find . -regex ".*.rmvb"
# 查找所有 RMVB文件

完整路径的意思就是不只是文件名这样,它还有前面的东西,所以也需要将前面部分考虑到正则表达式中才行,不然匹配不到文件,如下:

Kyle@Kyles-mbp Downloads % find . -type f -regex "漫长.*.mp4"
Kyle@Kyles-mbp Downloads % find . -type f -regex ".*漫长.*.mp4" 
./漫长的季节第01集.mp4/漫长的季节第01集.mp4
./漫长的季节第06集.mp4/漫长的季节第06集.mp4
./漫长的季节第10集.mp4/漫长的季节第10集.mp4
./漫长的季节第11集.mp4/漫长的季节第11集.mp4
./漫长的季节第07集.mp4/漫长的季节第07集.mp4
./漫长的季节第12集.mp4/漫长的季节第12集.mp4
./漫长的季节第04集.mp4/漫长的季节第04集.mp4
./漫长的季节第08集.mp4/漫长的季节第08集.mp4
./漫长的季节第09集.mp4/漫长的季节第09集.mp4
./漫长的季节第05集.mp4/漫长的季节第05集.mp4
./漫长的季节第02集.mp4/漫长的季节第02集.mp4
./漫长的季节第03集.mp4/漫长的季节第03集.mp4

扩展 Regex -E

直接使用 -regex 是使用的基础的正则语法,想用高级的就需要添加 -E 这个参数,如位置指定等等。
(MacLinux 有所不同,Linux 中是 -regextype posix-extended)
如:

find -E . -iregex ".*(金刚狼|x战警).*"
find . -size +1000M
# 查找大于 1000Mb 的文件
# 大小单位有 b(512字节) c w(2字节) k M G 区分大小写
  • f 普通文件
  • l 符号连接
  • d 目录
  • c 字符设备
  • b 块设备
  • s 套接字
  • p Fifo
find . -type f -name "*.rmvb"
# 搜索普通文件 .rmvb

文件时间戳

  • 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
  • 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
  • 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间
find . -type f -atime -7
# 搜索最近七天内被访问过的所有文件
find . -type f -atime 7
# 搜索恰好在七天前被访问过的所有文件
find . -type f -atime +7
# 搜索超过七天内被访问过的所有文件

否定参数 !

find /home ! -name "*.txt"
# 找出/home下不是以.txt结尾的文件

将搜索结果作为参数执行

{} 用于与 -exec 选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
-ok-exec 行为一样,不过它会给出提示,是否执行相应的操作。

find . -type f -name "*.txt" -exec cat {} ;> all.txt
# 查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find .-type f -user root -exec chown tom {} \;
# 找出当前目录下所有root的文件,并把所有权更改为用户tom 此处 ; 需要转义

查找结果写入文件

find . -name *.rmvb > FilmList.txt
				
通过Find命令搜索文件 find命令非常高效,并且使用简单。find命令来自unix,OS X和Linux系统同样支持该命令。find最基本的操作就是: find 文件路径 参数 比如你可以通过以下命令在用户文件夹中搜索名字中包含screen的文件 find ~ -iname "screen*" 你也可以在特定的文件夹中寻找特定的...
 
推荐文章