文章目录

  • ​​查找nginx​​
  • ​​查找视频并输出到文件​​
  • ​​find命令可以多条件吗?​​
  • ​​mtime参数的坑​​
  • ​​mtime查询结果不符合预期问题排查​​
  • ​​rename​​
  • ​​其他​​
  • ​​求解​​
  • ​​win7 批量修改文件名​​


find命令很有用:


-type d


-name 过滤文件名


-maxdepth 查找目录深度,默认会查找子目录,-maxdepth 1 表示当前目录。、

查找nginx

cd /; # 根目录开始,不会漏
find . -type d -name nginx; # 速度不慢

查找视频并输出到文件

window中输出到文件不换行的问题,加\r\n即可
find ./ -name "*.mp4" -printf "%f\r\n" >1.txt

常见的视频类型:

find ./ -name "*.mp4" -printf "%f\r\n" >1.txt;
find ./ -name "*.rmvb" -printf "%f\r\n" >>1.txt;
find ./ -name "*.avi" -printf "%f\r\n" >>1.txt;
find ./ -name "*.mkv" -printf "%f\r\n" >>1.txt;
find ./ -name "*.wmv" -printf "%f\r\n" >>1.txt;

find命令可以多条件吗?

可以,-o即可。

find . -name "*.mp4" -o -name "*.rmvb" -printf "%f\r\n" >1.txt

那么多视频类型为什么不用-o呢,是因为-printf 不会把前面的都打印出来,只会打印最后一个-name的,所以还是多写几行。

mtime参数的坑

问:查找修改时间在1天内的日志文件,命令怎么写?

find . -mtime 1 -name *;
上述命令对吗?

发现结果不太一致,查出的竟然昨天到前天的数据。

mtime查询结果不符合预期问题排查

这是为什么呢?
find命令mtime的文档描述为:
This command works this way because the time since each file was last modified is
divided by 24 hours and any remainder is discarded. That means that to match -mtime 0, a file will have to have a modification in the past which is less than 24 hours ago.

翻译为:
此命令是这样工作的,因为自上次修改每个文件以来的时间是除以24小时,剩余部分将被丢弃。这意味着要匹配-mtime0,文件必须在不到24小时前的过去进行修改。

也就是说:
时间差/24=n,小数部分会被丢弃
(now-mtime)/24=n,小数部分会被丢弃

所以当n=0时,时间范围为 now-mtime=024+(024)=(024)
所以当n=1时,时间范围为 now-mtime=1
24+(024)=(2448)
所以当n=2时,时间范围为 now-mtime=224+(024)=(4872)
所以当n=3时,时间范围为 now-mtime=3
24+(024)=(7296)

所以这里的n=3,表示的是(72~96)小时。 +3 表示96小时之外的数据,相当于人们常规理解的第4天。

那么如何使用呢,记得n-1即可。

rename

需求,下载的文件(夹)有wagnpan.com前缀,手动改太费劲,想要批量去掉:

find . -type d -name "wangpan.com-*" -exec rename  "wangpan.com-" "" {} \;
find . -type f -name "wangpan.com-*" -exec rename "wangpan.com-" "" {} \;

其他

求解

给所有的.mp4文件外面生成一个同名目录,并把该MP4文件放进对应目录下该怎么写命令呢?
应该是find、-exec、sed一起使用。 但如何写呢?

win7 批量修改文件名

win7 如何批量修改文件名:

ren 命令是rename的简写,在win7中输入: rename /?  可以查看用法
ren *.pdf *._ele_common.pdf;