Comment extraire le nom de fichier et l'extension dans le script shell

Comment extraire le nom de fichier et l'extension dans le script shell

Pour extraire le nom de fichier et l'extension à partir d'un chemin de fichier dans un script shell, vous pouvez utiliser le 'Basen Name' commande.

Voici un exemple de la façon dont vous pouvez utiliser nom de base pour extraire le nom de fichier et extension à partir d'un chemin de fichier donné:

#!/ usr / bin / env bash # définir un chemin de fichier filepath = "/ var / log / mail.Journal "# Extraire le nom de fichier et l'extension du chemin de fichier fileName = $ (Basename" $ ​​filepath ") # Extraire l'extension de l'extension de chemin de fichier =" $ nom de fichier ## *. "# Extraire le nom de fichier sans l'extension filename =" $ nom de fichier%.* "
12345678910111213#!/ usr / bin / env bash # définir un fichier pathfilepath = "/ var / log / mail.Log "# Extraire le nom de fichier et l'extension du fichier pathFileName = $ (Basename" $ ​​filepath ") # Extraire l'extension du fichier pathExtension =" $ nom de fichier ## *. "# Extraire le nom de fichier sans l'extensionFileName =" $ nom de fichier%.* "

Dans cet exemple, '$ filepath'est le chemin de fichier dont vous souhaitez extraire le nom de fichier et l'extension. Le nom de base la commande extrait le nom de fichier et extension à partir du chemin du fichier et le stocke dans le nom de fichier variable.

Le extension la variable est ensuite définie sur la chaîne après le dernier . caractère dans la variable de nom de fichier, en utilisant le ## opérateur d'expansion des paramètres.

Le nom de fichier la variable est ensuite définie sur la chaîne avant le dernier . caractère dans le nom de fichier variable, en utilisant le % opérateur d'expansion des paramètres.

Cela extraitra le nom de fichier et extension à partir du chemin du fichier et les stocker dans les variables de nom de fichier et d'extension, respectivement.

Vous pouvez ensuite utiliser ces variables dans votre script selon les besoins. Par exemple, vous pouvez utiliser le nom de fichier et extension Variables pour vérifier le type d'un fichier ou le renommer.

1. Obtenez le nom de fichier sans chemin

Tout d'abord, supprimez le chemin du fichier complet du nom de fichier d'entrée. Par exemple, si l'entrée du nom de fichier est comme «/ Var / log / courrier.enregistrer" puis extraire le nom de fichier complet poster.enregistrer seul.

#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") echo" nom de fichier complet: $ nom de fichier "
123456#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") echo" nom de fichier complet: $ nom de fichier "

La sortie sera:

Nom de fichier complet: courrier.enregistrer 

2. Nom de fichier sans extension

Extraire maintenant le nom de fichier sans extension de nom de fichier complet extrait sans chemin comme ci-dessus.

#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") filename =" $ filename%.* "Echo" Le nom de fichier est: $ nom de fichier "
123456#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") filename =" $ filename%.* "Echo" Le nom de fichier est: $ nom de fichier "

La sortie sera:

Le nom de fichier est: courrier 

3. Obtenez une extension uniquement

Extraire maintenant l'extension de fichier sans nom de nom de fichier complet extrait sans chemin.

#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") extension =" $ nom de fichier ## *. Extension "Echo": $ Extension "
1234567#!/ usr / bin / env bash filepath = "/ var / log / mail.log "filename = $ (nom de base" $ filepath ") extension =" $ nom de fichier ## *. Extension "Echo": $ Extension "

La sortie sera:

Extension: journal 

4. Extraire le chemin du répertoire

Vous pouvez également utiliser le 'dirname' commande pour extraire le chemin du répertoire à partir du chemin complet du fichier. Par exemple:

#!/ usr / bin / env bash filepath = "/ var / log / mail.log "dir = $ (dirname" $ ​​filepath ") echo" répertoire: $ dir "
123456#!/ usr / bin / env bash filepath = "/ var / log / mail.log "dir = $ (dirname" $ ​​filepath ") echo" répertoire: $ dir "

La sortie sera:

Répertoire: / var / log / 

Conclusion

Ce guide pratique rapide vous aide à comprendre comment extraire un nom de fichier et une extension à partir du chemin du fichier. Gardez à l'esprit que ces commandes ne fonctionnent qu'avec le shell bash. Si vous utilisez un shell différent, vous devrez peut-être utiliser une syntaxe différente.