我有一个大致如下的文件结构:
dir1
|--subdir1
|--file1 (modified date1)
|--file2 (modified date2)
|--file3 (modified date1)
|--subdir2
|--file4 (modified date3)
|--file5 (modified date4)
|--file6 (modified date3)
这些文件是ID3信息略有不同的音乐文件,因此fdupe不会将它们捕获为重复文件。我想从
dir1
中运行一个命令,该命令将递归到每个子目录中,找到所有文件的最大修改日期,然后提示删除任何修改日期早于最大修改日期的文件。在linux中有这样做的方法吗?预期产出将是:
dir1
|--subdir1
|--file1 (modified date1)
|--file3 (modified date1)
|--subdir2
|--file4 (modified date3)
|--file6 (modified date3)
最佳答案
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
关于linux - 如何查找和删除重复项并保持最新状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39963961/