Bash 脚本:生成 sha256sum 哈希并仅使用文件名(不包括路径)保存其输出

Bash 脚本:生成 sha256sum 哈希并仅使用文件名(不包括路径)保存其输出

我喜欢编写一个 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

相关内容