linux 对比两个目录字节数,比较2个文件夹和查找具有不同字节数的文件

Ludovic Kuty..

10

我会调整@ user1464130的答案,因为它在处理文件名中的空格时遇到了问题.

cd dir1

find . -type f -printf "%p %s\n" | sort > ~/dir1.txt

cd dir2

find . -type f -printf "%p %s\n" | sort > ~/dir2.txt

diff ~/dir1.txt ~/dir2.txt

如果要在每个文件上启动命令并在报告中使用结果,则可以使用whileBash构造.此示例用于md5sum计算每个文件的校验和.

find . -maxdepth 1 -type f -printf "%p %s\n" | while read path size; do echo "$path - $(md5sum $path | tr -s " " | cut -f 1 -d " ") - $size" ; done

每个$()都是单独执行的,允许我们计算每个文件的校验和.使用将tr每个连续空间挤压到单个空间中并cut在第n个位置提取第n个位置的单词.如果我们不这样做,我们会得到两次文件的名称,因为md5sum它会在stdout上返回.

这是一个不使用比较的例子(不diff).请注意,我使用破折号-来强调我们输出的关于每个文件的三个数据,但如果要将其提供给另一个程序则可能会出现问题.

$ find . -maxdepth 1 -name "*.c" -type f -printf "%p %s\n" | while read path size; do echo "$path - $(md5sum $path | tr -s " " | cut -f 1 -d " ") - $size" ; done

./thread.c - 5f2b7b12c7cd12fcb9e9796078e5d15b - 584

./utils.c - d61bc1dbc72768e622a04f03e3b8f7a2 - 3413

编辑:并处理文件名中的空格,仍然得到校验和和大小,您可以使用以下代码.

$ find . -maxdepth 1 -name "*.c" -type f -print0 | xargs -0 -n 1 md5sum | while read checksum path; do echo $path $(stat --printf="%s" "$path") $checksum ; done

./ini tia li za tion.c 84 31626123e9056bac2e96b472bd62f309

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值