【问题标题】:Find by month seems to be missing files按月查找似乎缺少文件
【发布时间】: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 或类似的可能会向您显示遗漏的内容,然后更容易理解您需要更改的内容。当然在第二个find cmd 上省略-exec mv ..。哦,如果您的所有dateList 文件都已移动,那么只需cd ../ ; find . > dateList,然后像以前一样comm ...cd ../ 旨在将您置于包含所有 20$YEAR 目录的目录的顶部。祝你好运。
  • 您写道它们都是自 2000 年 1 月以来创建的 - 但它们是自 2000 年以来修改的吗? (-newermt 检查修改时间,而不是创建或 inode 更改时间。)

标签: linux macos bash shell find


【解决方案1】:

这是使用 OS X 的统计数据和日期的替代方法:

for f in *;do d=../$(date -r $(stat -f%m $f) +%Y/%m);mkdir -p $d;mv $f $d;done

date -d @$(stat -c%Y $f) +%Y/%m 与 GNU 统计数据和日期一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2019-11-24
    • 2017-01-03
    • 2017-03-23
    相关资源
    最近更新 更多