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=124+(024)=(2448)
所以当n=2时,时间范围为 now-mtime=224+(024)=(4872)
所以当n=3时,时间范围为 now-mtime=324+(024)=(7296)
所以这里的n=3,表示的是(72~96)小时。 +3 表示96小时之外的数据,相当于人们常规理解的第4天。
那么如何使用呢,记得n-1即可。
另外,还有-atime(access time)等,这里不太用的到。
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;