如何使用 bash 中程序的输出重命名文件?

How to rename files with output from program in bash?

我一直在尝试寻找一种简单的单行解决方案来重命名目录中的所有文件及其 md5 哈希值。我考虑过使用 find -exec 但我不知道如何将 md5sum 的结果通过管道传输到 mv。我试过

的排列
find . -exec md5sum {} | mv {} \;

find . -exec mv {} `md5sum {}`

也许有更好的方法?请建议初学者。感谢所有帮助。

您可以重复使用以下答案:Rename files to md5 sum + extension (BASH)

通过稍微修改一下,它将完全按照您的要求执行(我已经为您编辑了命令):

md5sum * | sed -e 's/\([^ ]*\)  \(.*\)$/mv -v "" /' | sh

输出示例:

'a' -> 'b026324c6904b2a9cb4b88d6d61c81d1'
'b' -> '26ab0db90d72e28ad0ba1e22ee510510'
'c' -> '6d7fce9fee471194aa8b5b6e47267f03'