De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


O Comando Basename

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 26 de Agosto de 1998

Este comando, quando recebe como argumento o caminho de um arquivo, remove a porção de diretórios, deixando o nome do arquivo.

Um exemplo:

$ basename /usr/local/doc/proposta.txt
proposta.txt

Em outras palavras, o que este comando faz é retirar a última parte da cadeia de caracteres que não contenha o caractere /. Se a cadeia de caracteres terminar em /, este caractere também é removido:

$ basename /usr/local/doc/proposta.txt/
proposta.txt

Outra aplicação interessante é o uso deste comando para remoção da extensão. Veja só:

$ basename /usr/local/doc/proposta.txt .txt
proposta

Agora para que serve isto? O mais óbvio é quando se quer renomear múltiplos arquivos:

#!/bin/sh
for file in `find . -name \*.txt -print`
do
        mv $file `dirname $file`/`basename $file .txt`.doc
done

Este script renomeia todos os arquivos que tiverem a extensão .txt, a partir de um certo ponto na árvore de diretórios para um arquivo com o mesmo nome base e extensão .doc.

Apareceu um comando novo neste script, o comando dirname. Ele faz o contrário do que faz o comando basename:

$ dirname /usr/local/doc/proposta.txt
/usr/local/doc
Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)