【发布时间】:2018-05-20 20:11:05
【问题描述】:
我正在尝试管理我的相机创建的文件。
我有 2 个文件夹,一个用于 RawFiles,另一个用于代理文件。
我想遍历 RawFiles 文件夹中的所有文件,获取修改日期并找到具有相同修改日期的匹配文件。
目前我有以下脚本(你可能需要更改文件路径)
我找不到更好的方法来“查找”与确切时间戳匹配的文件。我已经注释掉了应该找到与时间戳匹配的文件的行。
我想在不依赖 perl 等的情况下继续在 MacOS 终端上运行。
#!/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```
【问题讨论】:
-
不确定你的 Q 是什么。如果您要求进行代码审查,您应该使用 Q 底部的
flag链接并要求版主将其移至 codereview.stackexchange.com 。find看起来很合理。如果您遇到错误,请发布更多详细信息,以便人们可以复制您的问题。祝你好运。 -
请问什么是"ProxyCard"?你到底想做什么?一个文件怎么可能比某些东西更新,也不比某些东西更新?为什么你认为日期/时间会匹配第二个?当您找到匹配项时,您实际上想做什么?为什么无缘无故打印“1”?
-
ProxyCard 只是另一个文件夹。我基本上有2个文件夹。我在 2 个不同的文件夹中有文件,它们的创建日期匹配但文件名不同。希望这是有道理的。我正在尝试创建一个脚本,通过匹配创建日期来重命名代理文件夹中的文件。我会尝试更新问题。
-
Shellter,“查找”语句不会返回具有匹配创建日期的实际文件。它仅适用于范围,我不确定是否需要在第一个 newermt 中添加 -1 秒,在第二个 newermt 中添加 +1 以获得范围。但是有没有另一种方法来比较日期而不是在一个范围内查找?
-
我无法编辑问题。所以要清楚,有2个文件夹。原始和代理。 RAW文件夹有文件1.CRM、2.CRM、3.CRM等。PROXY有a.mp4、b.mp4、c.mp4等。1.CRM和a.mp4是同时创建的,2.CRM和同时创建的b.mp4(精确到秒,文件名实际上更复杂)我想遍历RAW文件夹从1.CRM获取创建的时间戳,并在PROXY文件夹中找到与该创建日期匹配的文件以获得本例中为 a.mp4。希望这是有道理的。