【发布时间】:2021-06-02 09:48:45
【问题描述】:
我是 bash 循环的新手,我试图将目录中的所有文件重命名为相应的 md5 值。
目录中有 5 个示例文件。 出于测试目的,我尝试首先使用以下命令打印目录中所有文件的 md5 哈希,它工作正常。
for i in `ls`; do md5sum $i; done
输出:
edc47be8af3a7d4d55402ebae9f04f0a file1
72cf1321d5f3d2e9e1be8abd971f42f5 file2
4b7b590d6d522f6da7e3a9d12d622a07 file3
357af1e7f8141581361ac5d39efa4d89 file4
1445c4c1fb27abd9061ada3b30a18b44 file5
现在我正在尝试通过以下命令使用相应的 md5 哈希重命名每个文件:
for i in `ls`; do mv $i md5sum $i; done
输出失败:
mv: target 'file1' is not a directory
mv: target 'file2' is not a directory
mv: target 'file3' is not a directory
mv: target 'file4' is not a directory
mv: target 'file5' is not a directory
我在这里错过了什么?
【问题讨论】:
-
当你想要的是
for i in *时为什么要调用ls? -
@stark - 感谢您的评论。两者都工作正常。实际问题在另一个地方。我已经发布了答案。