首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改md5sum命令输出的分隔符

如何更改md5sum命令输出的分隔符
EN

Stack Overflow用户
提问于 2011-10-11 04:44:36
回答 3查看 601关注 0票数 2

我的代码如下所示:

代码语言:javascript
复制
for i in `find` ; 
do
    if [ -f $i ]; then
        if [ "$i" != "./ex.sh" ]; then
            md5sum $i >> checksums.txt;
        fi
    fi
done

问题是我想稍后在文件上使用awk,并使用"|“作为分隔符。但是我不知道如何在文件checksums.txt的md5sum和$i之间加上一个"|“。

EN

回答 3

Stack Overflow用户

发布于 2011-10-11 04:47:50

使用以下命令:

代码语言:javascript
复制
md5sum  $i | tr -s " " | tr " " "|" >> checksums.txt
票数 1
EN

Stack Overflow用户

发布于 2011-10-11 04:58:56

包括这个问题,我已经从你那里读到了至少3个关于同一问题的问题。我猜你想找到某个目录下所有重复的文件,对吧?

然后你可以尝试下面的一行,它将节省你以后的循环或双循环和awk处理:

代码语言:javascript
复制
find {what you want to find comes here} -exec md5sum '{}' \; | sort | uniq -d -w 33

它将列出重复的md5sum和文件名。

如果我的猜测是错的,就忽略我的答案。

票数 1
EN

Stack Overflow用户

发布于 2011-10-11 05:03:29

md5sum (至少是GNU coreutils中的版本)不提供用于控制输出格式的选项。您应该将awk脚本更改为将字符0...15视为md5sum,将行尾的字符18视为文件名。如果您确实需要特定的格式,那么应该解析md5sum的输出。例如:

代码语言:javascript
复制
user@host:~$ md5sum "/dev/null" | python -c 'import sys; s = sys.stdin.read(); print s[0:32] + "|" + s[34:],'
d41d8cd98f00b204e9800998ecf8427e|/dev/null

另外,您应该用引号(md5sum "$i")将md5sum的参数括起来。如上所述,如果有任何文件名包含空格或特殊字符,则脚本将失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7718444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档