我的文件结构大致如下:
dir1
|--subdir1
|--file1 (modified date1)
|--file2 (modified date2)
|--file3 (modified date1)
|--subdir2
|--file4 (modified date3)
|--file5 (modified date4)
|--file6 (modified date3)
这些文件是ID3信息稍有不同的音乐文件,因此fdupes不会将它们视为重复项。我想从dir1
运行一个命令,它将递归到每个子目录,找到所有文件的最大修改日期,然后提示删除任何修改日期早于最大值的文件。
有没有办法在linux中执行此操作?预期的输出是:
dir1
|--subdir1
|--file1 (modified date1)
|--file3 (modified date1)
|--subdir2
|--file4 (modified date3)
|--file6 (modified date3)
答案 0 :(得分:0)
stat -c %Y <file>
会在Epoch之后的几秒钟内为您提供上次修改文件的时间。要查找“最多修改日期”,请执行以下操作: (我假设是最新修改):
for i in `ls -1 subdir1/`; do stat -c %Y subdir1/${i} >> mod_dates.txt;done
latest_mod=`cat mod_dates.txt | sort -nr | head -n 1`
删除旧文件:
for i in `ls -1 subdir1/`; do if [[ `stat -c %Y $i` -lt $latest_mod ]]; then rm subdir1/${i};fi;done