GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de la commande Linux Basename dans les scripts Bash

La commande basename sous Linux imprime le composant final dans un chemin de fichier. Ceci est particulièrement utile dans les scripts bash où vous souhaitez extraire le nom de fichier du chemin de fichier long.

Laissez-moi vous le montrer avec quelques exemples.

Commande de nom de base

La commande basename a deux types de syntaxe. Le premier implique un suffixe :

basename PATH [suffix]

La seconde permet d'ajouter des options :

basename OPTION PATH

Vous ne pouvez pas combiner les options avec le suffixe. Ne soyez pas encore confus. Suivez les exemples et vous comprendrez ce que je veux dire.

L'utilisation de la commande basename avec un chemin de fichier donnera le nom du fichier :

basename /home/user/data/filename.txt
filename.txt

La commande basename est assez stupide en fait. Il ne reconnaît pas vraiment le chemin du fichier. Il recherche simplement les barres obliques (/) et imprime ce qui se trouve après la dernière barre oblique.

Par exemple, si j'exécute l'exemple ci-dessus en supprimant le nom du fichier, voici ce que cela donnera.

basename /home/user/data
data

Supprimer l'extension de fichier avec suffixe

L'utilisation principale de la commande bash consiste à extraire le nom du fichier du chemin du fichier. Vous pouvez également supprimer l'extension de fichier lors de l'extraction du nom de fichier.

Mentionnez simplement ce que vous souhaitez supprimer à la fin de la sortie. Supposons donc que vous souhaitiez supprimer le .txt de filename.txt. Ajoutez-le simplement à la fin de la commande basename :

basename /home/user/data/filename.txt .txt
filename

Vous pouvez également utiliser l'option -s pour le suffixe :

basename -s .txt /home/user/data/filename.txt
filename

Le suffixe est supprimé à la fin du composant final de l'entrée. Il ne comprend pas vraiment l'extension du fichier. Si vous fournissez txt (sans le point) au lieu de .txt, vous obtiendrez "nom de fichier". (avec le point à la fin).

De plus, si vous fournissez un suffixe qui n'est pas à la fin du composant, la sortie reste comme s'il n'y avait pas de suffixe.

basename /home/user/data/filename.txt name
filename.txt

Utiliser le nom de base avec plusieurs chemins

Avec l'option -a , vous pouvez utiliser plusieurs chemins simultanément.

basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1.txt
filename2.txt

Vous pouvez utiliser l'option de suffixe -s avec -a mais avec quelques limites. Vous ne pouvez fournir qu'un seul suffixe pour tous les chemins de fichiers.

basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1
filename2

Vous ne pouvez pas attribuer des suffixes individuels. Cela ne fonctionnera pas.

Vous pouvez également séparer la sortie avec NULL au lieu de la nouvelle ligne avec -z option.

Utilisation du nom de base dans le script bash

J'ai montré quelques exemples de la commande basename. Voyons quelques exemples de nom de base dans les scripts bash.

Supposons que vous ayez une variable de chemin de fichier et que vous souhaitiez stocker le nom de fichier à partir du chemin dans une variable. Il peut s'agir d'un simple script :

pathname="/home/dir/data/filename"

result=$(basename "$pathname")

echo $result

Un autre exemple est celui où vous souhaitez renommer les extensions de fichier. Bien sûr, vous pouvez utiliser la commande rename pour renommer des fichiers par lots, mais ce n'est qu'un exemple.

J'ai donc écrit cet exemple de script dans le but de remplacer les extensions de fichier :

for file in *$1; do
if [ -f $file ]; then
 mv $file `basename $file .$1`.$2
fi
done

Avez-vous remarqué que j'ai mis une vérification s'il s'agit d'un fichier ou non dans le script bash afin qu'il ne modifie pas un répertoire correspondant ?

Vous pouvez utiliser le script ci-dessus comme ceci :

./myscript.sh html htm

Et il renommera tous les fichiers du répertoire courant avec html à la fin en htm.

Ce ne sont là que quelques exemples. Vous pouvez l'utiliser selon vos besoins.

La commande basename est complétée par la commande dirname. Contrairement à basename, la commande dirname imprime tout le chemin sauf le dernier composant.

J'espère que ce tutoriel vous a plu. Comme toujours, n'hésitez pas à poser des questions ou à faire des suggestions dans la section des commentaires.


Linux
  1. Commande Tail Linux

  2. Utilisation de la commande Linux Sleep dans les scripts Bash

  3. Commande wc Linux

  4. Commande grep Linux

  5. Comment diviser un iso ou un fichier à l'aide de la commande 'split' sous Linux

Commande d'historique sous Linux (historique de bash)

Commande de nom de base sous Linux

Utilisation de la commande Cat sous Linux avec des exemples

Comment utiliser la commande echo dans les scripts Bash sous Linux

Utilisation de la commande Watch sous Linux

Utilisation de la commande Linux Dirname dans les scripts Bash