我的代码如下所示:
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之间。 感谢
答案 0 :(得分:2)
包括这个问题,我已经阅读了至少3个关于同一问题的问题。我想你想在某个目录下找到所有重复的文件,对吗?
然后你可以尝试下面的一个衬垫,它会保存你以后的循环或双循环和awk处理:
find {what you want to find comes here} -exec md5sum '{}' \; | sort | uniq -d -w 33
它将列出重复的md5sum和文件名。
如果我的猜测错了,请忽略我的回答。答案 1 :(得分:1)
使用此:
md5sum $i | tr -s " " | tr " " "|" >> checksums.txt
答案 2 :(得分:1)
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
的引号(md5sum "$i"
)中。如上所述,如果有任何包含空格或特殊字符的文件名,脚本将失败。