两个不同的文件夹具有相同的名称,但文件大小不同。有没有什么linux命令可以比较两个文件夹并同时告诉我文件大小的差异?
答案1
bash
斯蒂芬的回答的替代方案:
diff -u <(cd dir1 && du -a | sort -k2) <(cd dir2 && du -a | sort -k2)
这个和斯蒂芬的答案都假设你的文件名中没有换行符。
答案2
使用zsh
和vim
,您可以执行以下操作:
vim -d =(cd dir1 && du -a | sort -k2) =(cd dir2 && du -a | sort -k2)
(您可以替换vim -d
为diff -u
或kompare
或您喜欢的文本比较实用程序)。
命令替换的形式=(...)
与 ksh、zsh 和 bash 中的形式相同,<(...)
不同之处在于它使用临时文件而不是管道,以便它可以使用需要常规文件的命令(例如vim
)。对于没有该限制的命令(例如diff
),您可以使用<(...)
。
答案3
目录只是文件名和索引节点之间的映射,不存在“目录中的文件”。您可以通过命令询问可通过目录访问的文件的大小du(1)
)。如果您担心目录本身的大小(如 所报告的ls -ld directory
),其中包括当前文件名、现在已删除文件使用的空间、填充和各种官僚机构。
如果您想知道可访问的文件是否具有相同的名称/内容,cmp(1)
请比较两个文件。或者diff(1)
(使用-r
标志)递归地比较目录(不过,它适用于文本)。