Ce script permet d'afficher les chemins absolus de chaque ligne contenue dans un fichier de chemins relatifs passé en argument du script:
while IFS= read -r relative_path; do
# Convertir le chemin relatif en chemin absolu
echo $(realpath "$relative_path")
done < $1
La commande suivante permet de sauvegarder le résultat dans un fichier :
./rel2abs.sh chemins_relatifs.txt > chemins_absolus.txt
Pour convertir les chemins relatifs en chemins absolus dans un fichier en utilisant un script bash, vous pouvez lire chaque ligne du fichier, convertir le chemin relatif en chemin absolu, puis sauvegarder ou afficher le résultat. Voici comment procéder :
#!/bin/bash
# Chemin vers le fichier contenant les chemins relatifs
# Paramètre 1 pour le fichier d'entrée
# Paramètre 2 pour le fichier de sortie
input_file=${1:-"chemins_relatifs.txt"}
output_file=${2:-"chemins_absolus.txt"}
# S'assurer que le fichier de sortie est vide au départ
> "$output_file"
# Lire chaque ligne du fichier
while IFS= read -r relative_path; do
# Convertir le chemin relatif en chemin absolu
absolute_path=$(realpath "$relative_path")
# Écrire le chemin absolu dans le fichier de sortie
echo "$absolute_path" >> "$output_file"
done < "$input_file"
echo "Conversion terminée. Les chemins absolus sont dans le fichier $output_file."
input_file : Spécifie le fichier contenant les chemins relatifs. Assurez-vous que le chemin est correct.
output_file : Le fichier où les chemins absolus seront stockés. Le fichier est vidé avant d'être utilisé pour garantir que les résultats précédents ne sont pas retenus.
IFS= read -r : Lit chaque ligne du fichier de manière sécurisée, laissant les espaces blancs intacts avec IFS= et le -r prévient l'interprétation des backslashes.
realpath : Utilisé pour convertir un chemin relatif en absolu. Assurez-vous que realpath est installé sur votre système (la plupart des distributions modernes de Linux devraient l'avoir par défaut).
echo "$absolute_path" >> "$output_file" : Écrit le chemin absolu dans le fichier de sortie.
Si vous rencontrez des erreurs, assurez-vous que tous les chemins dans le fichier d'entrée existent, car realpath ne peut pas traiter les chemins inexistants. Pour ignorer les chemins inexistants, il suffit de modifier cette ligne :
# Convertir le chemin relatif en chemin absolu
absolute_path=$( [ -e "$relative_path" ] && realpath "$relative_path")