重命名 .txt 列表中的文件

重命名 .txt 列表中的文件

我有 .txt 列表,其中包含文件和相应的 MD5 哈希值:

ab16d9ab5682bb0038c901ad8fc424c0 *file1.doc
28bb8e092301340f19585201166e5b86 *file2.doc
5f53d5e9512a717049185fcf617b8a37 *file3.doc
3c28de2b988ce82b04803671540427e5 *file4.doc
75079fb178347e3f1b3b886589ca6471 *file5.doc

当 .txt 文件位于目录中时:

  1. 如何将文件重命名为其哈希值?
  2. 如何将哈希值重命名为其文件名?

答案1

如何将文件重命名为其哈希值?

while IFS=' ' read <&3 -r hash fileName; do
    echo mv -v -- "${fileName#\*}" "${hash}";
done 3< infile.txt

如何将哈希值重命名为其文件名?

while IFS=' ' read <&3 -r hash fileName; do
    echo mv -v -- "${hash}" "${fileName#\*}";
done 3< infile.txt

笔记echo:当您对试运行感到满意时删除。-v是一些实现支持的非标准扩展,mv告诉它们更详细。如果您mv不支持它,请将其删除。

我们infile.txt在文件描述符 3 而不是 stdin (0) 上打开,这样它就不会干扰mv用户提示(如果有)。

相关内容