Extraia o nome do arquivo e a extensão no Bash

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.

Carimbo de hora:

Mais de Abuso de pilha