我想找到文件中字节的差异。但是,带有 -a 的 du/diff 命令还列出目录和子目录。我只想要子目录和目录中的文件,而不是这些文件。
我知道 --exclude 选项,但我不知道如何操纵它来做到这一点。谢谢。
我的操作系统是linux debian。
我的命令是
dira=/mnt/hdd_a/;
dirb=/mnt/hdd_b/;
diff -u <(cd $dira && du -ab | sort -k2) <(cd $dirb && du -ab | sort -k2)
我也无法完全理解输出。我认为目录有 + 或 - 的差异有多种原因,例如。属性。我不在乎这个。但是,在数百个文件中,diff 打印一些不带 + 或 - 的文件。为什么?除了尺寸之外,它们可能在其他一些属性上有所不同?
--- /dev/fd/63 2023-08-22 01:38:15.775099368 +0300
+++ /dev/fd/62 2023-08-22 01:38:15.775099368 +0300
@@ -1,6 +1,6 @@
-364123856483 .
+364123860579 .
435823780 ./vid_01.mkv
-33781164566 ./news_a
+33781168662 ./news_b
19110023 ./news_c/covers_09.rar
161634304 ./news_d/video_d7.avi
17080320 ./news_e/video_d17.avi
据我了解,“u”选项仅打印 3 行。我想要所有差异线,而且只想要这些。不同的行(文件大小)。
使用 diff --changed-group-format='%<' --unchanged-group-format='' <(cd "$dira" && du -ab | sort -k2) <(cd "$dirb" && du -ab | sort -k2)
打印一些文件及其大小,没有任何“+/-”指示。所以我不知道差异是来自源文件还是来自目标文件。请注意,目标中丢失了整个文件。