获取所有具有相同或相同大小的目录和子目录的列表

获取所有具有相同或相同大小的目录和子目录的列表

我可以使用以下命令获取所有目录及其子目录的大小:

% /usr/bin/du -b */
4096    dest/src/_adoc
4096    dest/src/_txt
12288   dest/src
28117   dest/
4096    src/_adoc
4096    src/_txt
12818   src/

如何搜索所有目录和子目录以查找大小相似的目录?例如,在这种情况下,以下具有类似的大小。

4096    dest/src/_adoc
4096    dest/src/_txt
4096    src/_adoc
4096    src/_txt

答案1

使用 GNU 工具,您可以:

du -b | expand -t12 | sort | uniq -Dw12

假设目录名称不包含换行符,目录累积大小不超过 999999999999 字节。这也会扩展选项卡(包括文件名中出现的选项卡)。

要消除这些限制,您可以改为(仍然使用 GNU 工具):

du -b0 | sort -zn | awk -v RS='\0' -F'\t' '
  {
    if ($1 == prev) {
      if (!n++) print prev_line
      print
    } else {
      n = 0
      prev = $1
      prev_line = $0
    }
  }'

相关内容