1. Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Skylenusa Debian
Post recolhido
Enviado em 16/08/2019 - 18:19h
Boa noite,
Estou montado um programa que prescisa copiar o nome de arquivo, pórem sem a sua extensão.
Este código copia a extensão, pode ser usado, mas não tenho ideia de como...
Ou seja, caso "var=arquivo.nome.tar.gz", isso aqui "${var%.tar.gz}" mostra o conteúdo da variável sem ".tar.gz", sacou!
5. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Skylenusa Debian
Post recolhido
Enviado em 17/08/2019 - 12:56h
Ryuk , deu certo, pórem não está entrando na pasta por causa do ponto ./ antes do nome do programa.
6. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Ryukusa Nenhuma
Post recolhido
Enviado em 17/08/2019 - 17:45h
Skylen escreveu:
Ryuk , deu certo, pórem não está entrando na pasta por causa do ponto ./ antes do nome do programa.
Mostre o script completo.
7. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Skylenusa Debian
Post recolhido
Enviado em 19/08/2019 - 10:45h
Bom dia,
Desculpem a demora, vou colocar só as funções que involve o problema, pois o programa já está grande...
# -> O Instalar extrai de arcodo com a extenção de forma independente.
extrator() {
echo " Extrator"
echo ">>>>>>>>>> ------------------------------------------- <<<<<<<<<<"
echo
local_pasta
cd $caminho/$pasta
local_pasta
ls -la
enter
if [ "$ext7" == ".tar.gz" ]; then
echo
ls -l
echo
tar -xzvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext4" == ".tgz" ]; then
echo
ls -l
echo
tar -xzvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext7" == ".tar.bz" ]; then
echo
ls -l
echo
tar -xjvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext8" == ".tar.bz2" ]; then
echo "$pesquisa"
echo
ls -l
echo
tar -jxvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext7" == ".tar.xz" ]; then
echo
ls -l
echo
tar -xJvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext4" == ".zip" ]; then
echo
ls -l
echo
unzip -v $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
elif [ "$ext4" == ".tar" ]; then
echo
ls -l
echo
tar -xvf $pesquisa
rm $pesquisa
echo
echo "Extração concluida!!!"
echo
ls -l
enter
verificar_arquivos
fi
}
###################
# -> O Instalar verifica a existência dos arquivos:
# INSTALL, README, configure, Makefile, README.linux,
# dependendo de qual seja ele segue para função instalar ou sai do programa.
verificar_arquivos() {
echo ">>>>>>>>>> ------------------------------------------- <<<<<<<<<<"
echo " Verificar Arquivos de Instalação"
sleep 0.5
echo
local_pasta
ls -la # Tenho que está no caminho /$caminho/$pasta.
echo $exts
enter
# A função log faz o registro do programa instalado.
log(){
echo "#####################################################"
echo
echo "PROGRAMA: $nome_arq"
echo "DATA: `date`"
echo
}
cd $caminho/$pasta$exts
log >> /home/mac/script/log_scripts/source_code_installer-gamma.log
echo "$caminho/$pasta$exts" >> /home/mac/script/log_scripts/caminho_programa.log
ls -la # Estou na pasta que extrai, $nome_arq.
echo
enter
###################
#Variáveis dos arquivos.
install=INSTALL
CONFIGURE=configure
readme=README
make=Makefile
read_linux=README.linux
###################
documento(){
# Condicional verifica se os arquivos se encontra na pasta especificada.
if [ -e "$install" ]; then
echo
echo "Arquivo $install se encontra."
sleep 1
echo
nano $install
sleep 0.5
instalar
elif [ -e "$readme" ]; then
echo
echo "Arquivo $readme se encontra."
sleep 1
echo
nano $readme
sleep 0.5
instalar
elif [ -e "$make]" ]; then
echo
echo "Arquivo $make se encontra."
sleep 1
echo
sleep 0.5
instalar
elif [ -e "$read_linux" ]; then
echo
echo "Arquivo $read_linux se encontra."
sleep 1
echo
nano $read_linux
sleep 0.5
instalar
else # -> Caso não encontre os arquivos...
echo
echo "Arquivos inexistentes."
sleep 1
echo
xdg-open $caminho/$pasta/$nome_arq # -> Abre a pasta do programa.
remover_variaveis
exit
fi
}
8. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Ryukusa Nenhuma
Post recolhido
Enviado em 19/08/2019 - 13:18h
O problema é no resultado do comando "find", que mostra ./?
Coloque caminho completo da pasta no comando:
find /local/pasta -iname *.tar.gz ...
ou um asterisco *:
find * -iname *.tar.gz ...
ou assim:
find -iname *.tar.gz -printf '%P\n' ...
9. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Skylenusa Debian
Post recolhido
Enviado em 20/08/2019 - 10:22h
Vou tentar, depois notificou aqui.Sobre o find acredito que mostre a /, sim... Mas depois confimo...
10. Re: Copiar o nome do arquivo sem a extensão
msoliverusa Debian
Post recolhido
Enviado em 20/08/2019 - 18:27h
Boa noite, segue sugestão:
for arq in $(ls -1 *.{tar.gz,tar,tar.bz,tar.bz2,tar.xz,zip,tgz} 2>/dev/null);do
NC=$(awk -F'.' '{print NF}' <<< $arq);
if ((NC>3));then
ext=$(cut -d'.' -f$((NC-1))- <<< $arq)
nome=$(cut -d'.' -f1,-$((NC-2)) <<< $arq
else
nome=$(cut -d'.' -f1 <<< $arq)
ext=$(cut -d'.' -f2- <<< $arq)
fi
echo -e "\nArq: $arq Nome: $nome Ext: $ext\n"
case "${ext}" in
tar.gz) echo " Comandos para Descompactar \"tar.gz\"" ;;
tar) echo " Comandos para Descompactar \"tar\"" ;;
tar.bz) echo " Comandos para Descompactar \"tar.bz\"" ;;
tar.bz2) echo " Comandos para Descompactar \"tar.bz2\"" ;;
tar.xz) echo " Comandos para Descompactar \"tar.xz\"" ;;
zip) echo " Comandos para Descompactar \"zip\"" ;;
tgz) echo "Comandos para Descompactar \"tgz\"" ;;
esac
done
Importante => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver
11. Re: Copiar o nome do arquivo sem a extensão [RESOLVIDO]
Skylenusa Debian
Post recolhido
Enviado em 22/08/2019 - 16:08h
Boa tarde,
Ryuk, deu certo a sugestão que passou. Obrigado a todos pela ajuda!!!!
msoliver, testei sua sugestão, essa foi a saída do programa:
Porém o verdadeiro problema é que cada extensão tem um tamanho diferente
teria que criar uma variável para cada tipo
Boa tarde Skylen.
Desculpe a falha.... Não previ o "." "ponto" no nome do arquivo......
Nesse caso devemos contar a quantidade de "campos" usando o "ponto" como separador,
e, caso tenha mais de 3 campos, pegar sempre os dois últimos como extensão. Exemplo: #NC=Quantidade de Campos