for f in $( tasks/1_uniq/ -type f -follow -print | sed -r 's/[[:blank:]]+/ /g' ); do
md5sum $f
done
这就是打印它找到空间的地方。
tasks/1_uniq/two/6/66/test/me
&
my
friends
我无法妥善逃离这些空间。
答案 0 :(得分:1)
这是由于单词拆分,扩展后没有引号,它被'$ IFS'(空格选项卡和换行符)中的字符拆分,通过双引号将整个扩展作为参数。看来你想按换行分开。它可以通过阅读轻松完成;
while read filepath; do
md5sum "$filepath" # note the double quotes to avoid word splitting
done < <( tasks/1_uniq/ -type f -follow -print | sed -r 's/[[:blank:]]+/ /g' )
我不明白修改文件名的sed命令,它会给出错误的文件名,另一个选项
find ... -exec md5sum {} +
其中...
替换为选项
答案 1 :(得分:1)
从您的原始代码中,您的目标似乎是打印出目录下所有文件的md5校验和。在这种情况下,您只需使用rhash
rhash -r -M dir/
-r
表示递归,-M
表示md5哈希值