【发布时间】:2013-12-31 17:10:00
【问题描述】:
我正在运行以下命令来组织数千张图片,我已经创建了目录结构:
for YEAR in 00 01 02 03 04 05 06 07 08 09 10 11 12 13; do
for MONTH in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec; do
echo $YEAR $MONTH;
find . -newermt "01-$MONTH-20$YEAR -1 sec" -and \
-not -newermt "01-$MONTH-20$YEAR +1 month -1 sec" \
-exec mv {} ../20$YEAR/$MONTH/ \;
done
done
这已经成功地移动了几个文件。但是,似乎 find 缺少文件。如果我在我的脚本后面加上一个 ll |wc -l,那么目录中还有 2000 个文件。如果是按日期排序,则它们都是自 2000 年 1 月以来创建的。
我不是查找专家。任何帮助,将不胜感激。
【问题讨论】:
-
find . > allList; find . -newermt .... > dateList; comm -3 allList dateList或类似的可能会向您显示遗漏的内容,然后更容易理解您需要更改的内容。当然在第二个findcmd 上省略-exec mv ..。哦,如果您的所有dateList文件都已移动,那么只需cd ../ ; find . > dateList,然后像以前一样comm ...。cd ../旨在将您置于包含所有 20$YEAR 目录的目录的顶部。祝你好运。 -
您写道它们都是自 2000 年 1 月以来创建的 - 但它们是自 2000 年以来修改的吗? (
-newermt检查修改时间,而不是创建或 inode 更改时间。)
标签: linux macos bash shell find