我喜欢编写一个 Bash 脚本来生成文件的 sha256sum 哈希值,并使用哈希值和仅保存其输出filename.extension
(不包括路径)。
到目前为止,我尝试过的以下两个脚本都没有得到我想要的输出:
注意:每次运行脚本时都会有一个新名称的新文件,因此我*.iso
在脚本中使用它。
(1)
#!/bin/bash
cd /home/admn/Downloads
find -maxdepth 1 -type f -name "*.iso" -exec bash -c "sha256sum '{}' > '{}'.sha256" \;
exit;
这将创建一个文件Test.iso.sha256
但输出如下内容:
e64d11052abf5c3e19f0cd60e0b9c6196d8cb8615eba415ef1a3ac746f4b0c29 ./Test.iso
虽然我只是想要Test.iso
没有./
(2)
#!/bin/bash
cd /home/admn/Downloads
fullfilename="/home/admn/Downloads/*.iso"
filename=$(basename "$fullfilename")
sha256sum $filename > "$filename".sha256
exit;
这确实生成了我想要的输出:e64d11052abf5c3e19f0cd60e0b9c6196d8cb8615eba415ef1a3ac746f4b0c29 Test.iso
但是它创建的文件*
中有名称:*.iso.sha256
。谢谢。
操作系统:Ubuntu MATE 21.10
Bash:版本 5.1.8(1)-发布(x86_64-pc-linux-gnu)
答案1
这应该足够了
cd /home/admn/Downloads
for f in *.iso; do
sha256sum "$f" > "$f.sha256"
done
如果您想在添加 sha256 扩展之前删除 .iso 扩展名,请更改$f.sha256
为。${f%.iso}.sha256