Introdução
Há muitos motivos pelos quais você pode querer extrair o nome e a extensão de um arquivo no Bash:
-
Para manipular o nome ou extensão do arquivo – Você pode querer extrair o nome do arquivo ou extensão para modificá-lo, como adicionar um prefixo ou sufixo ao nome do arquivo ou alterar a extensão do arquivo.
-
Para criar um arquivo com um nome exclusivo – Você pode querer extrair o nome do arquivo e a extensão para criar um novo arquivo com um nome exclusivo, como adicionando um carimbo de data/hora ou um número aleatório ao nome do arquivo.
-
Para usar o nome ou extensão do arquivo em um script ou comando – Você pode querer extrair o nome do arquivo ou extensão para usá-lo como argumento ou entrada para um script ou comando, como para passá-lo para um programa ou para criar um arquivo com o mesmo nome de um diretório.
-
Para extrair informações do nome ou extensão do arquivo – Você pode querer extrair o nome do arquivo ou extensão para extrair informações dele, como a data ou o tipo de arquivo.
Neste artigo, daremos uma olhada nas três maneiras mais comuns de extrair nome e extensão de arquivo no Bash. Analisaremos cada um deles e apresentaremos os prós e os contras, para que você possa tomar uma decisão informada sobre qual abordagem é mais adequada para você.
Método 1: usando o nome de base Command
A basename
O comando pode ser usado para extrair o nome do arquivo e a extensão de um caminho de arquivo:
filename=$(basename /path/to/file.txt)
echo $filename
Embora este método seja bastante simples e fácil de usar, infelizmente não há como extrair apenas o nome do arquivo (sem extensão) sem qualquer pós-processamento.
Você também pode usar o dirname
comando para extrair o caminho do diretório separadamente:
directory=$(dirname /path/to/file.txt)
echo $directory
Prós:
- Simples de usar
- Lida corretamente com nomes de arquivos com espaços
Contras:
- Extrai apenas o nome do arquivo e não pode extrair a extensão separadamente sem processamento adicional
Método 2: usando expansão de parâmetros
Bash fornece um recurso chamado expansão de parâmetro, que permite extrair partes de uma variável usando uma sintaxe especial. Por exemplo, você pode usar a seguinte sintaxe para extrair o nome do arquivo e a extensão de um caminho de arquivo armazenado em uma variável:
filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename
Você também pode usar a expansão de parâmetros para extrair a extensão separadamente:
extension=${filename##*.}
echo $extension
Prós:
- Flexível
- Pode extrair o nome do arquivo e a extensão separadamente,
- Lida corretamente com nomes de arquivos com espaços
Contras:
- Requer uma variável para armazenar o caminho do arquivo
Método 3: usando o awk comando
A awk
comando é uma ferramenta poderosa de processamento de texto que pode ser usada para extrair partes de uma string. Por exemplo, você pode usar a seguinte sintaxe para extrair o nome do arquivo e a extensão de um caminho de arquivo:
filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename
Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!
Você também pode usar awk
para extrair a extensão separadamente:
extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension
Prós:
- Poderoso
- Pode extrair o nome do arquivo e a extensão separadamente
- Lida corretamente com nomes de arquivos com espaços
Contras:
- A sintaxe pode ser desconhecida para alguns usuários
- Requer canalizar o caminho do arquivo
awk
Conclusão
No geral, extrair o nome e a extensão de um arquivo no Bash pode ser uma técnica útil para trabalhar com arquivos e executar várias tarefas no shell Bash.
Cada um dos métodos mencionados tem suas vantagens e desvantagens, e a melhor escolha dependerá de suas necessidades e preferências específicas. Muitas vezes é útil estar familiarizado com múltiplas abordagens para que você possa escolher aquela que é mais adequada à sua situação.