Cómo extraer el nombre de archivo y la extensión en el script de shell

Cómo extraer el nombre de archivo y la extensión en el script de shell

Para extraer el nombre de archivo y la extensión de una ruta de archivo en un script de shell, puede usar el 'Basename' dominio.

Aquí hay un ejemplo de cómo puede usar nombre de base para extraer el Nombre del archivo y extensión de una ruta de archivo determinada:

#!/usr/bin/env Bash # Definir una ruta de archivo filepath = "/var/log/mail.registro " # Extraiga el nombre de archivo y la extensión de la ruta del archivo FileName = $ (BaseName" $ ​​FilePath ") # Extraer la extensión de la ruta del archivo Extension =" $ FileName ##*. " # Extraiga el nombre de archivo sin la extensión FileName =" $ FileName%.* "
12345678910111213#!/usr/bin/env Bash # Defina un archivo PathFilePath = "/var/log/mail.registro " # Extraiga el nombre de archivo y la extensión del archivo PathFileName = $ (BaseName" $ ​​FilePath ") # Extraer la extensión del archivo PathExtension =" $ FileName ##*. " # Extraiga el nombre de archivo sin el ExtensionFileName =" $ FileName%.* "

En este ejemplo, '$ filepath'es la ruta de archivo que desea extraer el nombre de archivo y la extensión de. El nombre de base El comando extrae el Nombre del archivo y extensión desde la ruta del archivo y la almacena en el Nombre del archivo variable.

El extensión La variable se establece luego en la cadena después de la última . personaje en la variable de nombre de archivo, utilizando el ## operador de expansión de parámetros.

El Nombre del archivo La variable se establece luego en la cadena antes de la última . personaje en el Nombre del archivo variable, usando el De % operador de expansión de parámetros.

Esto extraerá el Nombre del archivo y extensión Desde la ruta del archivo y guárdelos en las variables de nombre de archivo y extensión, respectivamente.

Luego puede usar estas variables en su script según sea necesario. Por ejemplo, puede usar el Nombre del archivo y extensión variables para verificar el tipo de archivo o cambiarlo.

1. Obtenga el nombre de archivo sin ruta

Primero, elimine la ruta del archivo completo del nombre de archivo de entrada. Por ejemplo, si la entrada del nombre de archivo es como "/Var/log/mail.registro" luego extrae el nombre de archivo completo correo.registro solo.

#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") echo" Nombre de archivo completo: $ nombre de archivo "
123456#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") echo" Nombre de archivo completo: $ nombre de archivo "

La salida será:

Nombre de archivo completo: correo.registro 

2. Nombre de archivo sin extensión

Ahora extraiga el nombre de archivo sin una extensión del nombre de archivo completo extraído sin una ruta como se indica anteriormente.

#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") FileName =" $ FileName%.* "echo" El nombre de archivo es: $ nombre de archivo "
123456#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") FileName =" $ FileName%.* "echo" El nombre de archivo es: $ nombre de archivo "

La salida será:

El nombre de archivo es: correo 

3. Obtenga solo extensión

Ahora extraiga la extensión del archivo sin nombre del nombre de archivo completo extraído sin ruta.

#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") Extension =" $ FileName ##*. Extensión "echo": $ extensión "
1234567#!/usr/bin/env Bash filepath = "/var/log/mail.log "FileName = $ (BaseName" $ ​​FilePath ") Extension =" $ FileName ##*. Extensión "echo": $ extensión "

La salida será:

Extensión: registro 

4. Extraer ruta de directorio

También puedes usar el 'Dirname' Comando para extraer la ruta del directorio de la ruta del archivo completo. Por ejemplo:

#!/usr/bin/env Bash filepath = "/var/log/mail.log "dir = $ (dirname" $ ​​filepath ") echo" directorio: $ dir "
123456#!/usr/bin/env Bash filepath = "/var/log/mail.log "dir = $ (dirname" $ ​​filepath ") echo" directorio: $ dir "

La salida será:

Directorio:/var/log/ 

Conclusión

Esta guía rápida de instrucciones lo ayuda a comprender cómo extraer un nombre de archivo y extensión de la ruta del archivo. Tenga en cuenta que estos comandos solo funcionan con el shell bash. Si está utilizando un shell diferente, es posible que necesite usar una sintaxis diferente.