basename
est un utilitaire de ligne de commande qui supprime le répertoire et le suffixe de fin des noms de fichiers donnés.
Utilisation du basename
Commande #
Le basename
La commande prend en charge deux formats de syntaxe :
basename NAME [SUFFIX]
basename OPTION... NAME...
basename
prend un nom de fichier et imprime le dernier composant du nom de fichier. En option, il peut également supprimer tout suffixe de fin. C'est une commande simple qui n'accepte que quelques options.
L'exemple le plus simple consiste à imprimer le nom du fichier avec les répertoires principaux supprimés :
basename /etc/passwd
La sortie inclura le nom du fichier :
passwd
Le basename
la commande supprime tout /
de fin caractères :
basename /usr/local/
basename /usr/local
Les deux commandes produiront le même résultat :
local
local
Par défaut, chaque ligne de sortie se termine par un caractère de saut de ligne. Pour terminer les lignes avec NUL
, utilisez le -z
(--zero
).
Plusieurs entrées #
Le basename
La commande peut accepter plusieurs noms comme arguments. Pour ce faire, invoquez la commande avec le -a
(--multiple
) suivi de la liste des fichiers séparés par un espace.
Par exemple, pour obtenir les noms de fichiers de /etc/passwd
et /etc/shadow
vous exécuteriez :
basename -a /etc/passwd /etc/shadow
passwd
shadow
Supprimer un suffixe de fin #
Pour supprimer tout suffixe de fin du nom de fichier, transmettez le suffixe comme second argument :
basename /etc/hostname name
host
Généralement, cette fonctionnalité est utilisée pour supprimer les extensions de fichiers :
basename /etc/sysctl.conf .conf
sysctl
Une autre façon de supprimer un suffixe de fin consiste à spécifier le suffixe avec le -s
(--suffix=SUFFIX
) :
basename -s .conf /etc/sysctl.conf
sysctl
Cette forme de syntaxe vous permet de supprimer tout suffixe de fin de plusieurs noms :
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
Exemple #
L'exemple suivant montre comment utiliser le basename
commande dans un bash for
looppour renommer tous les fichiers envoyant avec ".jpeg" dans le répertoire courant en remplaçant l'extension de fichier de ".jpeg" par ".jpg":
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
Si vous utilisez bash comme shell, au lieu d'appeler basename
, vous pouvez supprimer l'extension de fin à l'aide de Shell Parameter Expansion.
Conclusion #
Le basename
La commande supprime tout répertoire de début et suffixe de fin du nom.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.