Copiar vários arquivos com o zenity [RESOLVIDO]

1. Copiar vários arquivos com o zenity [RESOLVIDO]

Fernando T. Da Silva
nandosilva

(usa Lubuntu)

Enviado em 17/07/2021 - 14:44h

Como fazer que os vários arquivos selecionados, seja copiados para /tmp no zenity.

No script em zenity a seleção de vários arquivos funciona mas nenhum é copiado para o destino /tmp, agora se eu selecionar apenas
1 arquivos o mesmo é copiado mas ele fica com 0 bytes sendo que o da origem tem 100 kb.
Alguém sabe como fazer para ele pegar todos os arquivos que foram selecionados no zenity para que funcione com o comando cp.

Abaixo meu script que não funciona

$ cat copiador.sh
#!/bin/bash -
Files=$(zenity --file-selection --multiple --title "Escolha os arquivos pra copiar." --width=480 --height=300 ); echo $Files
if [ $? = 1 ];
then zenity --error --title "Copiador" --text "O Processo foi cancelado" & exit
fi
cp "$Files" /tmp



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/07/2021 - 19:38h

nandosilva escreveu:


msoliver escreveu:

nandosilva escreveu:

Como fazer que os vários arquivos selecionados, seja copiados para /tmp no zenity.

No script em zenity a seleção de vários arquivos funciona mas nenhum é copiado para o destino /tmp, agora se eu selecionar apenas
1 arquivos o mesmo é copiado mas ele fica com 0 bytes sendo que o da origem tem 100 kb.
Alguém sabe como fazer para ele pegar todos os arquivos que foram selecionados no zenity para que funcione com o comando cp.

Abaixo meu script que não funciona

$ cat copiador.sh
#!/bin/bash -
Files=$(zenity --file-selection --multiple --title "Escolha os arquivos pra copiar." --width=480 --height=300 ); echo $Files
if [ $? = 1 ];
then zenity --error --title "Copiador" --text "O Processo foi cancelado" & exit
fi
cp "$Files" /tmp


Boa noite nando, testado e funcionando....
O problema era o separador padrão "|", alterei para " "
#!/usr/bin/env bash
Files=$(zenity --file-selection --separator=" " --multiple --title "Escolha os arquivos pra copiar.");
printf "%s\n" ${Files}
[ -z "$Files" ] && { zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;exit;}
#ls -l ${Files};
cp $Files /tmp/



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
______________________________________________________________________


================================================
msoliver, agradecido o código do seu script funciona para copiar múltiplos arquivos, mas só um detalhe ele não funciona com arquivos que contenha espaço em branco no nome do arquivo, tem como fazer funcionar também com arquivo que tenha espaço em branco no nome ?

Nando, boa noite.
O velho problema do espaço em nome de arquivos...... :)
Sempre existe uma solução.....
Testa ai, aqui funcionou.....

#!/usr/bin/env bash
files="$(zenity --file-selection --multiple --filename=${HOME}/ --title "Escolha os arquivos:")";

if (( $(awk -F"|" '{print NF}' <<< "${files}") == 0 ));then
zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;
exit;
else
awk -F"|" '{for(n=1;n<=NF;n++) gsub(" ","\\ ",$n) system("cp "$n" /tmp/")}' <<< "$files"
fi

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Copiar vários arquivos com o zenity [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 17/07/2021 - 15:51h


talvez ajude

https://help.gnome.org/users/zenity/stable/file-selection.html.en


4. Re: Copiar vários arquivos com o zenity

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/07/2021 - 20:41h

nandosilva escreveu:

Como fazer que os vários arquivos selecionados, seja copiados para /tmp no zenity.

No script em zenity a seleção de vários arquivos funciona mas nenhum é copiado para o destino /tmp, agora se eu selecionar apenas
1 arquivos o mesmo é copiado mas ele fica com 0 bytes sendo que o da origem tem 100 kb.
Alguém sabe como fazer para ele pegar todos os arquivos que foram selecionados no zenity para que funcione com o comando cp.

Abaixo meu script que não funciona

$ cat copiador.sh
#!/bin/bash -
Files=$(zenity --file-selection --multiple --title "Escolha os arquivos pra copiar." --width=480 --height=300 ); echo $Files
if [ $? = 1 ];
then zenity --error --title "Copiador" --text "O Processo foi cancelado" & exit
fi
cp "$Files" /tmp


Boa noite nando, testado e funcionando....
O problema era o separador padrão "|", alterei para " "
#!/usr/bin/env bash
Files=$(zenity --file-selection --separator=" " --multiple --title "Escolha os arquivos pra copiar.");
printf "%s\n" ${Files}
[ -z "$Files" ] && { zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;exit;}
#ls -l ${Files};
cp $Files /tmp/



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
______________________________________________________________________



5. Re: Copiar vários arquivos com o zenity [RESOLVIDO]

Fernando T. Da Silva
nandosilva

(usa Lubuntu)

Enviado em 18/07/2021 - 10:47h


msoliver escreveu:

nandosilva escreveu:

Como fazer que os vários arquivos selecionados, seja copiados para /tmp no zenity.

No script em zenity a seleção de vários arquivos funciona mas nenhum é copiado para o destino /tmp, agora se eu selecionar apenas
1 arquivos o mesmo é copiado mas ele fica com 0 bytes sendo que o da origem tem 100 kb.
Alguém sabe como fazer para ele pegar todos os arquivos que foram selecionados no zenity para que funcione com o comando cp.

Abaixo meu script que não funciona

$ cat copiador.sh
#!/bin/bash -
Files=$(zenity --file-selection --multiple --title "Escolha os arquivos pra copiar." --width=480 --height=300 ); echo $Files
if [ $? = 1 ];
then zenity --error --title "Copiador" --text "O Processo foi cancelado" & exit
fi
cp "$Files" /tmp


Boa noite nando, testado e funcionando....
O problema era o separador padrão "|", alterei para " "
#!/usr/bin/env bash
Files=$(zenity --file-selection --separator=" " --multiple --title "Escolha os arquivos pra copiar.");
printf "%s\n" ${Files}
[ -z "$Files" ] && { zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;exit;}
#ls -l ${Files};
cp $Files /tmp/



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
______________________________________________________________________


================================================
msoliver, agradecido o código do seu script funciona para copiar múltiplos arquivos, mas só um detalhe ele não funciona com arquivos que contenha espaço em branco no nome do arquivo, tem como fazer funcionar também com arquivo que tenha espaço em branco no nome ?





6. Re: Copiar vários arquivos com o zenity [RESOLVIDO]

Fernando T. Da Silva
nandosilva

(usa Lubuntu)

Enviado em 19/07/2021 - 20:41h


msoliver escreveu:

nandosilva escreveu:


msoliver escreveu:

nandosilva escreveu:

Como fazer que os vários arquivos selecionados, seja copiados para /tmp no zenity.

No script em zenity a seleção de vários arquivos funciona mas nenhum é copiado para o destino /tmp, agora se eu selecionar apenas
1 arquivos o mesmo é copiado mas ele fica com 0 bytes sendo que o da origem tem 100 kb.
Alguém sabe como fazer para ele pegar todos os arquivos que foram selecionados no zenity para que funcione com o comando cp.

Abaixo meu script que não funciona

$ cat copiador.sh
#!/bin/bash -
Files=$(zenity --file-selection --multiple --title "Escolha os arquivos pra copiar." --width=480 --height=300 ); echo $Files
if [ $? = 1 ];
then zenity --error --title "Copiador" --text "O Processo foi cancelado" & exit
fi
cp "$Files" /tmp


Boa noite nando, testado e funcionando....
O problema era o separador padrão "|", alterei para " "
#!/usr/bin/env bash
Files=$(zenity --file-selection --separator=" " --multiple --title "Escolha os arquivos pra copiar.");
printf "%s\n" ${Files}
[ -z "$Files" ] && { zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;exit;}
#ls -l ${Files};
cp $Files /tmp/



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
______________________________________________________________________


================================================
msoliver, agradecido o código do seu script funciona para copiar múltiplos arquivos, mas só um detalhe ele não funciona com arquivos que contenha espaço em branco no nome do arquivo, tem como fazer funcionar também com arquivo que tenha espaço em branco no nome ?

Nando, boa noite.
O velho problema do espaço em nome de arquivos...... :)
Sempre existe uma solução.....
Testa ai, aqui funcionou.....

#!/usr/bin/env bash
files="$(zenity --file-selection --multiple --filename=${HOME}/ --title "Escolha os arquivos:")";

if (( $(awk -F"|" '{print NF}' <<< "${files}") == 0 ));then
zenity --error --title "Copiador" --text "O Processo foi cancelado" 2>/dev/null;
exit;
else
awk -F"|" '{for(n=1;n<=NF;n++) gsub(" ","\\ ",$n) system("cp "$n" /tmp/")}' <<< "$files"
fi

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts