Usando o comando `basename` para ler o nome do arquivo
O comando `basename` é usado para ler o nome do arquivo sem extensão de um diretório ou caminho de arquivo.
Sintaxe:
nome de baseNOME[SUFIXO]
ou
nome de baseOPÇÃO ... NOME ...
Aqui, NAME pode conter o nome do arquivo ou o nome do arquivo com o caminho completo. SUFFIX é opcional e contém a parte da extensão do arquivo que o usuário deseja remover. O comando `basename` tem algumas opções que são descritas abaixo.
Opções
Nome | Descrição |
-para | É usado para passar vários nomes de arquivos com caminho ou sem caminho como argumentos de comando. |
-s | É usado para passar a extensão como sufixo que precisa ser removido. |
-Com | É usado para exibir os vários nomes de arquivo, separando cada arquivo com nulo. |
-ajuda | É usado para exibir as informações de uso do comando `basename`. |
-versão | É usado para exibir as informações da versão. |
Exemplo-1: Usando NAME e SUFFIX
O seguinte comando `basename` irá recuperar o nome do arquivo com a extensão. SUFFIX é omitido neste comando. Aqui, a saída é ‘Product.txt’ .
$nome de base /casa/fahmida/código/product.txt
Se você deseja recuperar o nome do arquivo sem extensão, você deve fornecer a extensão do arquivo como SUFFIX com o comando `basename`. Aqui, a extensão é .txt. Execute o seguinte comando para remover a extensão do arquivo.
$nome de base /casa/fahmida/código/product.txt .txt
Exemplo-2: Usando a opção ‘-a’ e NOME
O uso da opção ‘-a’ do comando `basename` é mostrado neste exemplo. Aqui, dois caminhos de arquivo são passados como argumentos com o comando `basename`. Cada nome de arquivo com extensão será recuperado do caminho e impresso por nova linha.
$nome de base -para /casa/fahmida/index.html/casa/fahmida/código/emp.txt
Exemplo-3: Usando a opção ‘-z’ e NOME
A opção ‘-z’ é usada com o comando `basename` para imprimir os vários nomes de arquivos com valor nulo em vez de nova linha. O comando a seguir usa duas opções juntas, ‘-a’ e ‘-z’. Aqui, dois nomes de arquivo, index.html e emp.txt imprimirá sem nenhum espaço ou nova linha.
$nome de base -a /casa/fahmida/index.html/casa/fahmida/código/emp.txt
Exemplo-4: Usando a opção '-s' e NOME
O seguinte comando pode ser usado como alternativa ao SUFFIX com `basename`. A extensão do arquivo precisa ser passada com a opção ‘-sh’ para remover a extensão do arquivo do arquivo. O exemplo a seguir removerá a extensão, ‘-sh’ do arquivo ‘additional.sh’.
$nome de base -s.sh plus.sh
Exemplo 5: Remover extensão de arquivo sem SUFFIX
Se você não souber a extensão do arquivo que deseja remover do nome do arquivo, este exemplo o ajudará a resolver o problema. Crie um arquivo chamado read_file.sh com o código a seguir para recuperar o nome do arquivo de qualquer extensão. O comando `sed` é usado neste exemplo para remover qualquer tipo de extensão do nome do arquivo. Se você executar o script, a saída será ‘ média 'Depois de remover a extensão' py '.
read_file.sh
#! / bin / bash# Defina o nome do arquivo com o caminho
nome do arquivo='/home/fahmida/code/average.py'
# Leia o nome do arquivo sem extensão usando os comandos ‘basname’ e `sed`
jogou fora '$ (basename '$ filename' | sed 's / (. * ) .. * / 1 / ')'
Execute o script.
$bashread_file.sh
Exemplo-6: converter extensão de arquivo de txt para docx
O nome do arquivo sem extensão precisa converter o arquivo de uma extensão para outra. Este exemplo mostra como você pode alterar a extensão de todos os arquivos de texto (.txt) em arquivos de texto (.docx) usando o comando `basename` no script bash. Crie um arquivo chamado, convert_file.sh com o seguinte código. Aqui, um loop for-in é usado para ler todos os arquivos de texto com .TXT extensão do diretório atual. O nome do arquivo sem extensão é lido pelo comando `basename` e renomeado adicionando a extensão .docx em cada iteração do loop.
convert_file.sh
#! / bin / bash# o loop irá ler cada arquivo de texto do diretório atual
paranome do arquivono ``ls *.TXT``
Faz
# Imprime o nome do arquivo de texto antes da conversão
jogou fora 'Nome do arquivo antes da conversão:$ filename'
# Mude a extensão do arquivo txt para docx
mv - '$ filename' '$ (basename - '$ filename' .txt).docx '
feito
Execute o script.
$bashconvert_file.shVerifique se os arquivos de texto foram convertidos ou não usando o comando `ls`.
$ls
Exemplo-7: Ler o nome do arquivo sem extensão usando a expansão do parâmetro Shell
A expansão do parâmetro do shell é outra maneira de ler o nome do arquivo sem extensão no bash. Este exemplo mostra os usos da expansão de parâmetro de shell. O seguinte comando irá armazenar o caminho do arquivo na variável, $ nome do arquivo .
$nome do arquivo='/var/usr/temp/myfile.tar.gz'O comando a seguir removerá todos os tipos de extensão do caminho e armazenará o caminho do arquivo sem extensão na variável, $ file1 .
$arquivo1='$ {filename %%. *}'O comando a seguir imprimirá o nome do arquivo apenas do caminho. Aqui, a saída irá ‘ meu arquivo '.
$jogou fora '$ {file1 ## * /}'Se o nome do arquivo contém duas extensões com dois pontos (.) E você deseja ler o nome do arquivo removendo a última extensão do arquivo, então você deve usar o seguinte comando. Execute o seguinte comando que armazena o caminho do arquivo na variável, $ file2 removendo a última extensão do arquivo.
$arquivo2='$ {filename%. *}'Agora, execute o seguinte comando para imprimir o nome do arquivo com a extensão de um ponto (.). Aqui, a saída será myfile.tar.
$jogou fora '$ {file2 ## * /}'
Conclusão
O nome do arquivo sem extensão é necessário para vários fins. Alguns usos de nome de arquivo sem extensão são explicados neste tutorial usando alguns exemplos, como conversão de arquivo. Este tutorial ajudará os usuários interessados a aprender as maneiras de separar o nome e a extensão do arquivo do caminho do arquivo. Duas maneiras são explicadas aqui. O usuário pode seguir qualquer uma dessas maneiras para extrair o nome do arquivo apenas do caminho do arquivo.