我的代码如下所示:
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之间加上一个"|“。
发布于 2011-10-11 04:47:50
使用以下命令:
md5sum $i | tr -s " " | tr " " "|" >> checksums.txt发布于 2011-10-11 04:58:56
包括这个问题,我已经从你那里读到了至少3个关于同一问题的问题。我猜你想找到某个目录下所有重复的文件,对吧?
然后你可以尝试下面的一行,它将节省你以后的循环或双循环和awk处理:
find {what you want to find comes here} -exec md5sum '{}' \; | sort | uniq -d -w 33它将列出重复的md5sum和文件名。
如果我的猜测是错的,就忽略我的答案。
发布于 2011-10-11 05:03:29
md5sum (至少是GNU coreutils中的版本)不提供用于控制输出格式的选项。您应该将awk脚本更改为将字符0...15视为md5sum,将行尾的字符18视为文件名。如果您确实需要特定的格式,那么应该解析md5sum的输出。例如:
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的参数括起来。如上所述,如果有任何文件名包含空格或特殊字符,则脚本将失败。
https://stackoverflow.com/questions/7718444
复制相似问题