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

标签 linux bash mv md5sum

我一直在努力寻找一种简单的单行解决方案来重命名目录中的所有文件及其 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 "\2" \1/' | sh

输出示例:

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

关于linux - 如何使用 bash 中程序的输出重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837074/

相关文章:

linux - 使用 bash shell 脚本比较不同目录中的文件

linux - 我如何知道Linux中的套接字连接(tcp或udp)已经建立了多长时间?

linux - 如何从 struct page 获取 struct vm_area_struct

c - 在 Linux 内核中终止进程的正确方法是什么?

linux - 计算字数并指定行数

php - 我正在将文本从 bash 脚本传递到 php。除 mount 和 unmount bash 命令外,一切正常。我究竟做错了什么?

linux - 使用 find 和 xargs 创建目录

linux - 使用 mv 命令 linux 时输出文件名

linux - 使用 mv 在 bash 脚本中重命名文件

linux - 当前目录中文件根目录有 2 个下划线的文件