我可以使用md5 -r foo.txt > md5.txt
创建一个文本文件,文件的md5后跟一个空格,然后是该文件的本地路径......但我如何才能让这两项由TAB
字符分隔呢?
作为参考和上下文,我使用的完整命令是
find . -type f -exec \
bash -c '
md=$(md5 -r "$0")
siz=$(wc -c <"$0")
echo -e "${md}\t${siz}"
' {} \; \
> listing.txt
注意,md5输出的 filepath 项也可能包含空格,如./path to file/filename
,这些空格不应转换为制表符。
3条答案
按热度按时间vwkv1x7d1#
sed
是另一个选项:这将用制表符替换每行的第一个空格。
(Note您要将输出重定向到的文件不应位于
find
正在搜索的目录树中)np8igboo2#
尝试内置
printf
和P.E.参数扩展,以拆分md
变量。产出
PAGER='less +/^[[:space:]]*parameter\ expansion' man bash
xxe27gdn3#
看起来你只是在散列和文件名之间留下了你不想要的空格。快速通过awk可以为你清除这些空格。默认情况下,输入awk分隔符是任意数量的白色。简单地运行awk并使用新的OFS(输出字段分隔符)打印字段就是你所需要的。事实上,这使得通过
echo
变得毫无意义。就我个人而言,我会将find命令的输出运行到while循环中,这基本上与上面的相同,但更容易理解。