1 votes

Bash script : Générer un hash sha256sum et sauvegarder sa sortie avec seulement le nom du fichier, sans le chemin d'accès

J'aimerais écrire un script Bash pour générer le hash sha256sum d'un fichier, et sauvegarder sa sortie avec le hash et seulement filename.extension à l'exclusion du chemin.

Je n'obtiens pas le résultat souhaité avec les deux scripts suivants que j'ai essayés jusqu'à présent :

Note : Il y aura un nouveau fichier avec un nouveau nom à chaque fois que le script sera exécuté, c'est pourquoi j'utilise *.iso dans le script.

(1)

#!/bin/bash

cd /home/admn/Downloads

find -maxdepth 1 -type f -name "*.iso" -exec bash -c "sha256sum '{}' > '{}'.sha256" \;

exit;

Cela crée un fichier Test.iso.sha256 mais avec une sortie : e64d11052abf5c3e19f0cd60e0b9c6196d8cb8615eba415ef1a3ac746f4b0c29 ./Test.iso

Alors que je veux juste Test.iso sans ./

(2)

#!/bin/bash

cd /home/admn/Downloads

fullfilename="/home/admn/Downloads/*.iso"
filename=$(basename "$fullfilename")

sha256sum $filename > "$filename".sha256

exit;

Cela génère le résultat que je souhaite : e64d11052abf5c3e19f0cd60e0b9c6196d8cb8615eba415ef1a3ac746f4b0c29 Test.iso mais les fichiers qu'il crée ont * à la place du nom : *.iso.sha256 . Merci.

OS : Ubuntu MATE 21.10

Bash : Version 5.1.8(1)-release (x86_64-pc-linux-gnu)

2voto

steeldriver Points 118154

Il devrait suffire de faire

cd /home/admn/Downloads

for f in *.iso; do
  sha256sum "$f" > "$f.sha256"
done

Changer $f.sha256 zu ${f%.iso}.sha256 si vous souhaitez supprimer l'extension .iso avant d'ajouter l'extension sha256.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X