作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试管理由我的相机创建的文件。
我有 2 个文件夹,一个用于 RawFiles
,另一个用于代理文件。
我想遍历 RawFiles 文件夹中的所有文件,获取修改日期并找到具有相同修改日期的匹配文件。
到目前为止我有以下脚本(您可能需要更改文件路径)
我找不到更好的方法来“查找”与确切时间戳匹配的文件。我已经注释掉了应该找到与时间戳匹配的文件的行。
我想让它在 MacOS 终端上运行,而不依赖于 perl 等。
#!/bin/bash
echo "Start Renaming Proxy files matching RAW files."
fmt='%Y%m%d%H%M%S'
RAWFILES=("/Volumes/RAWCard/"*.CRM)
PROXYDIR="/Volumes/ProxyCard/DCIM"
for f in "${RAWFILES[@]}"
do
echo "${f}";
export STAMP="$(stat -f "%Sm" -t "$fmt" "$f")"
echo "${STAMP}"
echo "1"
# find $PROXYDIR -type f -newermt "${STAMP}" ! -newermt "${STAMP}"
echo "Parse"
date -j -f %s -v +1S "${STAMP}" +"$fmt"
done```
最佳答案
不确定我是否理解您的意图,但这应该有所帮助。您可以使用 stat
一次性获取一大堆文件自 1970 年 1 月 1 日(纪元)以来的修改(或访问、更改或出生时间),如下所示:
stat -f "%m %SN" RAWCard/*
示例输出
1511359473 RAWCard/step1.png
1511359474 RAWCard/step2.png
1512638778 RAWCard/step3.png
如果对两个目录都这样做,则可以使用 join
连接公共(public)字段(时间)上的行:
stat -f "%m %SN" RAWCard/* > raw
stat -f "%m %SN" ProxyCard/* > proxy
join raw proxy
示例输出
1511359473 RAWCard/step1.png ProxyCard/step1.png
1511359474 RAWCard/step2.png ProxyCard/step2.png
1512638778 RAWCard/step3.png ProxyCard/step3.png
或者,您可以一次完成所有操作:
join <(stat -f "%m %SN" RAWCard/*) <(stat -f "%m %SN" ProxyCard/*)
如果你想删除时间戳字段,你可以这样做:
join -o 1.2,2.2 ...
您还可以循环读取这些对:
join -o 1.2,2.2 ... | while read a b ; do
echo $a is friends with $b
done
我建议您始终仔细检查生成的文件数是否正确 - 因为如果您在同一秒内拍摄了两张图像,或者在同一秒内没有拍摄匹配的图像,您就会遇到问题。
工作脚本 --
echo "Start Renaming Files"
RAWFILES="/Volumes/RAWCard/CRM/REEL_002/*"
PROXYDIR="/Volumes/ProxyCard/DCIM/136_1205/*.MP4"
stat -f "%m %SN" /Volumes/RAWCard/CRM/REEL_002/*.CRM > raw
stat -f "%m %SN" /Volumes/ProxyCard/DCIM/136_1205/*.MP4 > proxy
join raw proxy
join -o 1.2,2.2 raw proxy | while read a b; do
echo $a is friends with $b
rawfilebasename=$(basename "$a")
rawfilename="${rawfilebasename%.*}"
echo $rawfilename
proxydirname=$(dirname "$b")
proxyfilename=$(basename "$b")
proxyextension="${proxyfilename##*.}"
echo $proxydirname/$rawfilename.$proxyextension
mv $b $proxydirname/$rawfilename.$proxyextension
done
关于macos - Mac 操作系统 shell : Find a file by exact modified date time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47682874/
我是一名优秀的程序员,十分优秀!