Lire le nom de fichier sans extension en bash

Lire le nom de fichier sans extension en bash
Les utilisateurs de Linux doivent travailler régulièrement avec des fichiers à de nombreuses fins. Parfois, les utilisateurs doivent lire le nom de base du fichier uniquement en supprimant l'extension du fichier. Le nom de fichier et l'extension peuvent être séparés et stockés sur différentes variables de Linux de plusieurs manières. La commande intégrée et l'expansion des paramètres de shell peuvent être utilisées pour supprimer l'extension du fichier. Comment le nom de fichier sans extension peut être lu en utilisant les façons mentionnées ci-dessus est expliquée dans ce tutoriel.

Utilisation de la commande «Basename» pour lire le nom de fichier

La commande 'Basename' est utilisée pour lire le nom du fichier sans extension à partir d'un répertoire ou d'un chemin de fichier.

Syntaxe:

Nom du nom de basen [suffixe]

ou

Option de nom de base… Nom…

Ici, le nom peut contenir le nom de fichier ou le nom de fichier avec un chemin complet. Le suffixe est facultatif et il contient la partie d'extension de fichier que l'utilisateur souhaite supprimer. La commande 'Basename' a certaines options qui sont décrites ci-dessous.

Options

Nom Description
-un Il est utilisé pour passer plusieurs noms de fichiers avec un chemin ou sans chemin comme arguments de commandement.
-s Il est utilisé pour passer l'extension comme suffixe qui doit supprimer.
-z Il est utilisé pour afficher les plusieurs noms de fichiers en séparant chaque fichier avec null.
-aider Il est utilisé pour afficher les informations de l'utilisation de la commande «Basename».
-version Il est utilisé pour afficher les informations de la version.

Exemple-1: Utilisation du nom et du suffixe

La commande «Basename» suivante récupérera le nom de fichier avec extension. Le suffixe est omis de cette commande. Ici, la sortie est 'produit.SMS'.

$ Basename / Home / Fahmida / Code / Produit.SMS

Si vous souhaitez récupérer le nom de fichier sans extension, vous devez fournir l'extension de fichier en tant que suffixe avec la commande «Basename». Ici, l'extension est «.SMS". Exécutez la commande suivante pour supprimer l'extension du fichier.

$ Basename / Home / Fahmida / Code / Produit.SMS .SMS

Exemple-2: Utilisation de l'option et nom «-a»

L'utilisation de l'option «-a» de la commande «Basename» est affichée dans cet exemple. Ici, deux chemins de fichier sont passés comme arguments avec la commande «Basename». Chaque nom de fichier avec extension se récupère à partir du chemin et imprimera par Newline.

$ Basename -a / Home / Fahmida / Index.HTML / HOME / FAHMIDA / CODE / EMP.SMS

Exemple-3: Utilisation de l'option et nom «-z»

L'option '-z' est utilisée avec la commande 'Basename' pour imprimer les multiples noms de fichiers avec une valeur null au lieu de Newline. La commande suivante utilise deux options ensemble, '-a' et '-z'. Ici, deux noms de fichiers, indice.html et empiler.SMS Imprimera sans aucun espace ni nouvelle ligne.

$ Basename -Az / Home / Fahmida / Index.HTML / HOME / FAHMIDA / CODE / EMP.SMS

Exemple-4: Utilisation de l'option et nom «-s»

La commande suivante peut être utilisée comme alternative de suffixe avec «nom de base». L'extension du fichier doit passer avec l'option '-sh' pour supprimer l'extension de fichier du fichier. L'exemple suivant supprimera l'extension, «-sh» du fichier, «ajout.sh '.

$ Basename -s .ajout de sh.shot

Exemple-5: supprimer l'extension du fichier sans suffixe

Si vous ne connaissez pas l'extension du fichier que vous souhaitez retirer du nom de fichier, cet exemple vous aidera à résoudre le problème. Créer un fichier nommé read_file.shot avec le code suivant pour récupérer le nom de fichier de toute extension. La commande 'SED' est utilisée dans cet exemple pour supprimer tout type d'extension du nom de fichier. Si vous exécutez le script, la sortie sera 'moyenne«Après avoir retiré l'extension»py'.

read_file.shot

#!/ bac / bash
# Définissez le nom de fichier avec le chemin
filename = "/ home / fahmida / code / moyenne.py "
# Lisez le nom de fichier sans extension en utilisant la commande «BasName» et «SED»
Echo "$ (Basename" $ ​​FileName "| S / \ SED (.*\)\… */\1/')"

Exécutez le script.

$ bash read_file.shot

Exemple-6: convertir l'extension de fichier de Txt en docx

Le nom de fichier sans extension doit convertir le fichier d'une extension en une autre. Cet exemple montre que vous pouvez modifier l'extension de tous les fichiers texte (.txt) dans les fichiers Word (.docx) en utilisant la commande 'Basename' dans le script bash. Créer un fichier nommé, convert_file.shot avec le code suivant. Ici, une boucle for-in est utilisée pour lire tous les fichiers texte avec ".SMS" Extension du répertoire actuel. Le nom de fichier sans extension est lu par la commande «Basename» et renommé en ajoutant «.Extension docx ”dans chaque itération de la boucle.

convert_file.shot

#!/ bac / bash
# La boucle lira chaque fichier texte dans le répertoire actuel
pour le nom de fichier dans 'LS *.SMS'
faire
# Imprimez le nom de fichier de texte avant la conversion
Echo "Nom de fichier avant conversion: $ nom de fichier"
# Modifiez l'extension du fichier txt en docx
MV - "$ FileName" "$ (Basename -" $ filename " .SMS).docx "
fait

Exécutez le script.

$ bash convert_file.shot

Vérifiez que les fichiers texte sont convertis ou non à l'aide de la commande «LS».

$ ls

Exemple-7: Lire le nom de fichier sans extension en utilisant l'expansion des paramètres du shell

L'expansion des paramètres de coque est une autre façon de lire le nom de fichier sans extension en bash. Cet exemple montre les utilisations de l'expansion des paramètres de coque. La commande suivante stockera le nom du fichier dans la variable, $nom de fichier.

$ filename = "/ var / usr / temp / myfile.le goudron.gz "

La commande suivante supprimera tous les types d'extension du chemin et stockera le chemin du fichier sans extension dans la variable, $ fichier1.

$ file1 = "$ nom de fichier %%.* "

La commande suivante imprimera le nom de fichier uniquement à partir du chemin. Ici, la sortie seramon fichier'.

$ echo "$ file1 ## * /"

Si le nom de fichier contient deux extensions avec deux points (.) Et vous souhaitez lire le nom de fichier en supprimant la dernière extension du fichier, alors vous devez utiliser la commande suivante. Exécutez la commande suivante qui stockent le chemin du fichier dans la variable, $ file2 en supprimant la dernière extension du fichier.

$ file2 = "$ nom de fichier%.* "

Maintenant, exécutez la commande suivante pour imprimer le nom de fichier avec un point (.) extension. Ici, la sortie sera "mon fichier.le goudron".

$ echo "$ file2 ## * /"

Conclusion

Le nom de fichier sans extension est requis à diverses fins. Certaines utilisations du nom de fichier sans extension sont expliquées dans ce tutoriel en utilisant quelques exemples tels que la conversion de fichiers. Ce tutoriel aidera les utilisateurs qui souhaitent apprendre les moyens de séparer le nom et l'extension du fichier du chemin du fichier. Deux façons sont expliquées ici. L'utilisateur peut suivre n'importe laquelle de ces moyens pour extraire le nom de fichier uniquement à partir du chemin du fichier.