我有一个非常大的文件目录,每个文件都有自己的子目录。这些子目录中有各种质量的视频(1080p、720p……等等)。我只想保留最高质量的视频(因此尺寸最大)。有没有办法通过命令行或批处理文件来做到这一点?
Parent_directory
- Video_A
-- Video_A_1080p
--video_A_720p
-Video_B
-- Video_B_1080p
--video_B_720p
-- Video_B_480p
注意视频文件名不一定包含分辨率,我只是说明目录结构。
结果应该是:
Parent_directory
- Video_A
-- Video_A_1080p
-Video_B
-- Video_B_1080p
答案1
就像是:
for dir in *
do
cd $dir
echo rm $(ls -1S | tail -n +2)
cd ..
done
删除echo
它以使其真正发挥作用。先测试一下(在检查您是否有有效的完整备份之前,切勿做这样的事情)!它有各种边缘情况:它假设顶部只有目录,没有文件,并且目录中的文件“正确”命名,即没有空格。并且您也没有数百万个文件,否则命令行将溢出。
ls -1S
给出按大小排序的所有文件列表。tail -n +2
仅保留列表中从第二行到末尾的所有内容,即删除第一行,即最大的文件。其余部分将被rm
删除。