查找文件夹内的目录,如果子目录小于某个大小,则删除文件夹 + 父目录?

查找文件夹内的目录,如果子目录小于某个大小,则删除文件夹 + 父目录?

我使用 gmusic 来整理和组织我的文件夹结构。然而这意味着我留下了一些文件夹,除了通常的图片封面外,没有任何文件。

我想对所有文件夹和子文件夹进行排序,然后删除父文件夹(如果文件夹小于 5mb)。

这是我所看到的另一个答案,但这不处理子文件夹。

du --max-depth 1 | awk -v q='"' '$1 < 30000000 && $2 != "." {sub(/^[0-9\t ]+/, "", $0); print q $0 q}'

下面我们要删除该文件夹Always Ascending并保留所有文件夹。

在此处输入图片描述

但在这里,我们要删除George Harrison& 2017 - Guardians Of The Galaxy Vol. 2 Awesome Mix Vol. 2& Disk 1

在此处输入图片描述

答案1

find所有文件夹,检查大小是否小于例如 5000。如果小于,则rm -Rf文件夹和使用-prune不会下降到此文件夹。仅当第一个为真时,才会运行第二个-exec和。-prune-exec

find . -type d \
  -exec sh -c '[ $(du -s "$1" | cut -f1) -lt 5000 ]' find-sh {} \; \
  -exec echo rm -Rf {} \; \
  -prune

我放了echo rm,在删除之前,请仔细检查输出是否正确echo

相关内容