Leia o nome do arquivo sem extensão em Bash

Leia o nome do arquivo sem extensão em Bash
Os usuários do Linux precisam trabalhar com arquivos regularmente para muitos fins. Às vezes, os usuários precisam ler o nome da base do arquivo apenas removendo a extensão do arquivo. Nome do arquivo e extensão podem ser separados e armazenados em diferentes variáveis ​​no Linux de várias maneiras. Comando interno e expansão de parâmetros de shell pode ser usada para remover a extensão do arquivo. Como o nome do arquivo sem extensão pode ser lido usando as maneiras mencionadas acima são explicadas neste tutorial.

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 do arquivo.

Sintaxe:

Nome do nome da base [sufixo]

ou

Opção de nome de base… nome…

Aqui, o nome pode conter o nome do arquivo ou nome do arquivo com caminho completo. O sufixo é opcional e contém a parte de extensão do arquivo que o usuário deseja remover. O comando 'Basename' tem algumas opções descritas abaixo.

Opções

Nome Descrição
-a É 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 remover.
-z É usado para exibir os vários nomes de arquivos separando cada arquivo com nulo.
-ajuda É usado para exibir as informações de usar o comando 'basename'.
-versão É usado para exibir as informações da versão.

Exemplo 1: Usando o nome e o sufixo

O seguinte "nome de base" do comando recuperará o nome do arquivo com extensão. O sufixo é omitido deste comando. Aqui, a saída é 'produtos.TXT'.

$ Basename/Home/Fahmida/Code/Produto.TXT

Se você deseja recuperar o nome do arquivo sem extensão, deve fornecer a extensão do arquivo como sufixo com o comando 'basename'. Aqui, a extensão é “.TXT". Execute o seguinte comando para remover a extensão do arquivo.

$ Basename/Home/Fahmida/Code/Produto.TXT .TXT

Exemplo 2: Usando a opção e nome '-a'

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 recuperará do caminho e imprimirá por newline.

$ basename -a/home/fahmida/índice.html/home/fahmida/code/empal.TXT

Exemplo 3: Usando a opção e nome '-z'

A opção '-z' é usada com o comando 'basename' para imprimir os vários nomes de arquivos com valor nulo em vez de newline. O comando a seguir usa duas opções juntas, '-a' e '-z'. Aqui, dois nomes de arquivos, índice.html e Emp.TXT Imprimirá sem espaço ou nova linha.

$ basename -az/home/fahmida/índice.html/home/fahmida/code/empal.TXT

Exemplo-4: Usando a opção e nome '-s'

O comando a seguir pode ser usado como uma alternativa de sufixo com 'nome de base'. A extensão do arquivo precisa passar 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, 'adição.sh '.

$ basename -s .adição sh.sh

Exemplo 5: Remova a extensão do arquivo sem sufixo

Se você não conhece 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 seguinte código 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 caminho
filename = "/home/fahmida/code/média.py "
# Leia o nome do arquivo sem extensão usando o comando 'Basname' e 'sed'
eco "$ (nome da base" $ filename "| sed 's/\ (.*\) \… */\ 1/') "

Execute o script.

$ Bash read_file.sh

Exemplo 6: Converter Extensão de Arquivos de Txt para Docx

O nome do arquivo sem extensão precisa converter o arquivo de uma extensão para outro. Este exemplo mostra que como você pode alterar a extensão de todos os arquivos de texto (.txt) nos arquivos do Word (.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 ao adicionar “.Docx ”extensão em cada iteração do loop.

convert_file.sh

#!/BIN/BASH
# O loop lerá cada arquivo de texto do diretório atual
para o nome do arquivo em 'ls *.TXT'
fazer
# Imprima o nome do texto do texto antes da conversão
eco "nome do arquivo antes da conversão: $ FILENAME"
# Altere a extensão do arquivo txt para docx
MV - "$ FILENAME" "$ (nome da base -" $ FILENAME " .TXT).docx "
feito

Execute o script.

$ Bash Convert_file.sh

Verifique se os arquivos de texto são convertidos ou não usando o comando 'LS'.

$ ls

Exemplo 7: Leia o nome do arquivo sem extensão usando a expansão dos parâmetros do shell

A expansão dos parâmetros do shell é outra maneira de ler o nome do arquivo sem extensão em bash. Este exemplo mostra os usos da expansão dos parâmetros do shell. O comando a seguir armazenará o nome do arquivo na variável, $nome do arquivo.

$ filename = "/var/usr/temp/myfile.alcatrão.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.

$ file1 = "$ FileName %%.* "

O comando a seguir imprimirá o nome do arquivo apenas do caminho. Aqui, a saída vai 'meu arquivo'.

$ echo "$ file1 ##*/"

Se o nome do arquivo contiver 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 armazenam o caminho do arquivo na variável, $ file2 Removendo a última extensão do arquivo.

$ file2 = "$ nome do arquivo%.* "

Agora, execute o seguinte comando para imprimir o nome do arquivo com um ponto (.) extensão. Aqui, a saída será "meu arquivo.alcatrão".

$ echo "$ file2 ##*/"

Conclusão

O nome do arquivo sem extensão é necessário para vários fins. Alguns usos do nome do arquivo sem extensão são explicados neste tutorial usando alguns exemplos, como conversão de arquivos. Este tutorial ajudará os usuários que estão interessados ​​em aprender as maneiras de separar o nome do arquivo e a extensão do caminho do arquivo. Duas maneiras são explicadas aqui. O usuário pode seguir qualquer uma dessas maneiras de extrair o nome do arquivo apenas do caminho do arquivo.