Extraire le nom de fichier et l'extension dans Bash

Introduction

Il existe de nombreuses raisons pour lesquelles vous souhaiterez peut-être extraire le nom et l'extension d'un fichier dans Bash :

  • Pour manipuler le nom ou l'extension du fichier – Vous souhaiterez peut-être extraire le nom ou l'extension du fichier afin de le modifier, par exemple en ajoutant un préfixe ou un suffixe au nom du fichier, ou en modifiant l'extension du fichier.

  • Pour créer un fichier avec un nom unique – Vous souhaiterez peut-être extraire le nom du fichier et son extension afin de créer un nouveau fichier avec un nom unique, par exemple en ajoutant un horodatage ou un nombre aléatoire au nom du fichier.

  • Pour utiliser le nom ou l'extension du fichier dans un script ou une commande – Vous souhaiterez peut-être extraire le nom de fichier ou l'extension afin de l'utiliser comme argument ou entrée pour un script ou une commande, par exemple pour le transmettre à un programme ou pour créer un fichier portant le même nom qu'un répertoire.

  • Pour extraire des informations du nom ou de l'extension du fichier – Vous souhaiterez peut-être extraire le nom ou l’extension du fichier afin d’en extraire des informations, telles que la date ou le type de fichier.

Dans cet article, nous examinerons les trois façons les plus courantes d'extraire le nom et l'extension de fichier dans Bash. Nous examinerons chacun d’eux et vous donnerons les avantages et les inconvénients, afin que vous puissiez prendre une décision éclairée sur l’approche qui vous convient le mieux.

Méthode 1: utilisation du nom de base Command

La basename La commande peut être utilisée pour extraire le nom de fichier et l’extension d’un chemin de fichier :

filename=$(basename /path/to/file.txt)
echo $filename

Bien que cette méthode soit assez simple et facile à utiliser, il n’est malheureusement pas possible d’extraire uniquement le nom du fichier (sans extension) sans aucun post-traitement.

Vous pouvez également utiliser la dirname commande pour extraire le chemin du répertoire séparément :

directory=$(dirname /path/to/file.txt)
echo $directory

Avantages:
  • Simple à utiliser
  • Gère correctement les noms de fichiers avec des espaces
Inconvénients:
  • Extrait uniquement le nom de fichier et ne peut pas extraire l'extension séparément sans traitement supplémentaire

Méthode 2 : utilisation de l'expansion des paramètres

Bash fournit une fonctionnalité appelée expansion des paramètres, qui vous permet d'extraire des parties d'une variable à l'aide d'une syntaxe spéciale. Par exemple, vous pouvez utiliser la syntaxe suivante pour extraire le nom de fichier et l'extension d'un chemin de fichier stocké dans une variable :

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

Vous pouvez également utiliser l'expansion des paramètres pour extraire l'extension séparément :

extension=${filename##*.}
echo $extension

Avantages:
  • Sources
  • Peut extraire à la fois le nom de fichier et l'extension séparément,
  • Gère correctement les noms de fichiers avec des espaces
Inconvénients:
  • Nécessite une variable pour stocker le chemin du fichier

Méthode 3: utilisation du awk commander

La awk La commande est un puissant outil de traitement de texte qui peut être utilisé pour extraire des parties d'une chaîne. Par exemple, vous pouvez utiliser la syntaxe suivante pour extraire le nom de fichier et l'extension d'un chemin de fichier :

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Consultez notre guide pratique et pratique pour apprendre Git, avec les meilleures pratiques, les normes acceptées par l'industrie et la feuille de triche incluse. Arrêtez de googler les commandes Git et en fait apprendre il!

Vous pouvez également utiliser awk pour extraire l'extension séparément :

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Avantages:
  • Puissant
  • Peut extraire à la fois le nom de fichier et l'extension séparément
  • Gère correctement les noms de fichiers avec des espaces
Inconvénients:
  • La syntaxe peut être inconnue de certains utilisateurs
  • Nécessite de transmettre le chemin du fichier via awk

Conclusion

Dans l'ensemble, extraire le nom de fichier et l'extension d'un fichier dans Bash peut être une technique utile pour travailler avec des fichiers et effectuer diverses tâches dans le shell Bash.

Chacune des méthodes mentionnées présente ses propres avantages et inconvénients, et le meilleur choix dépendra de vos besoins et préférences spécifiques. Il est souvent utile de se familiariser avec plusieurs approches afin de pouvoir choisir celle qui convient le mieux à votre situation.

Horodatage:

Plus de Stackabuse