Como extrair o nome do arquivo e extensão no script de shell

Como extrair o nome do arquivo e extensão no script de shell

Para extrair o nome do arquivo e a extensão de um caminho de arquivo em um script de shell, você pode usar o 'nome de base' comando.

Aqui está um exemplo de como você pode usar nome de base Para extrair o nome do arquivo e extensão De um determinado caminho de arquivo:

#!/usr/bin/Env Bash # Defina um caminho de arquivo filepath = "/var/log/Mail.Log " # Extraia o nome do arquivo e a extensão do arquivo de arquivo de arquivo = $ (nome da base" $ filepath ") # Extraia a extensão da extensão do caminho do arquivo =" $ FileName ##*. " # Extraia o nome do arquivo sem o nome da extensão =" $ FileName%.* "
12345678910111213#!/usr/bin/Env Bash # Definir um arquivo pathfilepath = "/var/log/Mail.Log " # Extrair o nome do arquivo e extensão do arquivo PathFileName = $ (nome da base" $ filepath ") # Extrair a extensão do arquivo pathextension =" $ FileName ##*. " # Extraia o nome do arquivo sem o ExtensionFileName =" $ FileName%.* "

Neste exemplo, '$ filepath'É o caminho do arquivo que você deseja extrair o nome do arquivo e a extensão. O nome de base O comando extrai o nome do arquivo e extensão do caminho do arquivo e o armazena no nome do arquivo variável.

O extensão A variável é então definida como a string após o último . personagem na variável de nome do arquivo, usando o ## Operador de expansão de parâmetros.

O nome do arquivo A variável é então definida como a string antes do último . personagem no nome do arquivo variável, usando o % Operador de expansão de parâmetros.

Isso irá extrair o nome do arquivo e extensão a partir do caminho do arquivo e armazená -los no nome do arquivo e variáveis ​​de extensão, respectivamente.

Você pode usar essas variáveis ​​em seu script conforme necessário. Por exemplo, você pode usar o nome do arquivo e extensão variáveis ​​para verificar o tipo de arquivo ou renomeá -lo.

1. Obtenha o nome do arquivo sem caminho

Primeiro, remova o caminho completo do arquivo do nome do arquivo de entrada. Por exemplo, se a entrada do nome do arquivo for como “/Var/log/e -mail.registro" Em seguida, extraia o nome completo do arquivo correspondência.registro apenas.

#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") eco" nome completo do arquivo: $ filename "
123456#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") eco" nome completo do arquivo: $ filename "

A saída será:

Nome do arquivo completo: e -mail.registro 

2. Nome do arquivo sem extensão

Agora extraia o nome do arquivo sem uma extensão do nome completo extraído do arquivo sem um caminho como acima.

#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") nome do arquivo =" $ FileName%.* "Echo" o nome do arquivo é: $ FILENAME "
123456#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") nome do arquivo =" $ FileName%.* "Echo" o nome do arquivo é: $ FILENAME "

A saída será:

O nome do arquivo é: Mail 

3. Obtenha apenas extensão

Agora extraia a extensão do arquivo sem nome do nome completo extraído do arquivo sem caminho.

#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") extension =" $ nome do arquivo ##*. "Echo" Extensão: $ extensão "
1234567#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "nome do arquivo = $ (nome da base" $ filepath ") extension =" $ nome do arquivo ##*. "Echo" Extensão: $ extensão "

A saída será:

Extensão: log 

4. Extrair caminho do diretório

Você também pode usar o 'Dirname' comando para extrair o caminho do diretório do caminho completo do arquivo. Por exemplo:

#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "dir = $ (dirname" $ ​​filepath ") eco" diretório: $ dir "
123456#!/usr/bin/Env Bash filepath = "/var/log/Mail.log "dir = $ (dirname" $ ​​filepath ") eco" diretório: $ dir "

A saída será:

Diretório:/var/log/ 

Conclusão

Este guia de instruções rápido ajuda você a entender como extrair um nome de arquivo e extensão do caminho do arquivo. Lembre -se de que esses comandos só funcionam com a casca de bash. Se você estiver usando um shell diferente, pode ser necessário usar uma sintaxe diferente.