unir o conteúdo de várias pastas em uma nova

Iniciado por cygnusx-1, 31 de Dezembro de 2010, 15:22

tópico anterior - próximo tópico

cygnusx-1

Boa tarde
Tenho aqui várias pastas diferentes com várias imagens e qro juntar o conteúdo de todas elas em uma pasta só, sem ter q abrir uma por uma pra mover os arquivos para a nova pasta. Tem algum comando de terminal pra fazer isso, algum script ou algum outro método? Obrigado

irtigor

Dá pra fazer, ex

#!/bin/bash
IFS=$','
#lista dos diretorios -origem- itens separados por virgulas (preferencialmente caminho absoluto)
dirlist='/foo,/bar'
for i in $dirlist; do
    #Move o conteudo para a pasta /target
    mv "$i"/* /target
    #apaga a origem (vazio!)
    rmdir "$i"
done
unset IFS

cygnusx-1

Citação de: irtigor online 01 de Janeiro de 2011, 12:51
Dá pra fazer, ex

#!/bin/bash
IFS=$','
#lista dos diretorios -origem- itens separados por virgulas (preferencialmente caminho absoluto)
dirlist='/foo,/bar'
for i in $dirlist; do
    #Move o conteudo para a pasta /target
    mv "$i"/* /target
    #apaga a origem (vazio!)
    rmdir "$i"
done
unset IFS


Bah, nao entendo nada. Isso é um script? Como faço pra usá-lo?

irtigor

É um bash script. Você tem que salvar em um arquivo texto, dar permissão de execução e rodar. É necessário modificar o dirlist e o /target, faça alguns testes antes de usar em algo *real*

cygnusx-1

Citação de: irtigor online 01 de Janeiro de 2011, 13:04
É um bash script. Você tem que salvar em um arquivo texto, dar permissão de execução e rodar. É necessário modificar o dirlist e o /target, faça alguns testes antes de usar em algo *real*
Salvei e dei permissão pra executar mas qdo clico e mando executar nada acontece.

libonati

Não é melhor você usar o shift para marcar todas as pastas e copiar para a pasta que você quer?

cygnusx-1

Citação de: libonati online 01 de Janeiro de 2011, 14:24
Não é melhor você usar o shift para marcar todas as pastas e copiar para a pasta que você quer?
não é bem iso q eu qro fazer. eu qro copiar SÓ O CONTEÚDO de cada pasta para uma nova pasta, não cada pasta inteira.

irtigor

Citação de: irtigor online 01 de Janeiro de 2011, 13:04
É necessário modificar o dirlist e o /target, faça alguns testes antes de usar em algo *real*
Fez? Olha os comentários no script. Se não tem intimidade com a linha de comando, faz pelo nautilus (F3 depois: ctrl+a,ctrl+x e ctrl+v).

cygnusx-1

#8
Citação de: irtigor online 01 de Janeiro de 2011, 21:40
Citação de: irtigor online 01 de Janeiro de 2011, 13:04
É necessário modificar o dirlist e o /target, faça alguns testes antes de usar em algo *real*
Fez? Olha os comentários no script. Se não tem intimidade com a linha de comando, faz pelo nautilus (F3 depois: ctrl+a,ctrl+x e ctrl+v).
sou novato com scripts, tenho q copiar o arquivo de texto para aquela pasta de scripts do nautilus? Se for assim, desse jeito q vc disse não executou. Coloquei o arquivo de texto na pasta de scripts, dei permissão de execução com chmod +x mas nada acontece qdo faço F3 depois: ctrl+a,ctrl+x e ctrl+v.
EDITADO: Só deixando claro q estou usando o linux mint 10 32 bits.

irtigor

#9
Não... to falando pra você usar o segundo painel, para facilitar o copia/cola (nada de script). Como eu já disse, você precisa editar o dirlist e /target... rode pelo terminal (alem de ler os comentários).
-----
Exemplo prático, (quero mover o conteúdo das pastas /home/irtigor/documentos/pasta1 e /home/irtigor/documentos/pasta2 para /home/irtigor/documentos/arquivos)
#!/bin/bash
IFS=$','
#lista dos diretorios -origem- itens separados por virgulas (preferencialmente caminho absoluto)
dirlist='/home/irtigor/documentos/pasta1,/home/irtigor/documentos/pasta2'
for i in $dirlist; do
    #Move o conteudo para a pasta /target
    mv "$i"/* /home/irtigor/documentos/arquivos
    #apaga a origem (vazio!)
    rmdir "$i"
done
unset IFS

cygnusx-1

Citação de: irtigor online 02 de Janeiro de 2011, 11:14
Não... to falando pra você usar o segundo painel, para facilitar o copia/cola (nada de script). Como eu já disse, você precisa editar o dirlist e /target... rode pelo terminal (alem de ler os comentários).
-----
Exemplo prático, (quero mover o conteúdo das pastas /home/irtigor/documentos/pasta1 e /home/irtigor/documentos/pasta2 para /home/irtigor/documentos/arquivos)
#!/bin/bash
IFS=$','
#lista dos diretorios -origem- itens separados por virgulas (preferencialmente caminho absoluto)
dirlist='/home/irtigor/documentos/pasta1,/home/irtigor/documentos/pasta2'
for i in $dirlist; do
    #Move o conteudo para a pasta /target
    mv "$i"/* /home/irtigor/documentos/arquivos
    #apaga a origem (vazio!)
    rmdir "$i"
done
unset IFS

Copia e cola o q? Todas as pastas q quero juntar pra uma pasta nova pra depois editar o script, colocar o caminho da pasta onde estão todas as pastas q eu qro juntar e colocar o destino de todas as pastas unidas? Na verdade esse script não é mto prático pra mim, o q eu queria era algum pra executar direto do nautilus em q em seleciono várias pastas e ele junta automaticamente o conteudo de todas em uma nova pasta sem eu ter q ficar editando o script manualmente pra colocar caminho de pastas de origem/destino

irtigor

#11
Realmente não estamos falando a mesma língua...

#!/bin/bash
targetdir=`zenity --entry --text "Caminho?" --entry-text "caminho"`
for i in "$@"; do
   if [ -d "$i" ]; then
       mv "$i"/* "$targetdir"
   fi
done

Se quer ver isso funcionando, vai ter que "se mexer" (não tem como eu adivinhar o que está errado).

Já que você não tem nenhuma experiencia com terminal, esquece o script. Use o segundo painel (F3), ctrl+a (seleciona tudo), ctrl+x (recorta) e ctrl+v (cola).

cygnusx-1

Citação de: irtigor online 02 de Janeiro de 2011, 11:54
Realmente não estamos falando a mesma língua...

#!/bin/bash
targetdir=$(zenity --entry --text "Caminho?" --entry-text "")
for i in "$@"; do
   if [ -d "$i" ]; then
       mv "$i"/* "$targetdir"
   fi
done

Se quer ver isso funcionando, vai ter que "se mexer" (não tem como eu adivinhar o que está errado).

Já que você não tem nenhuma experiencia com terminal, esquece o script. Use o segundo painel (F3), ctrl+a (seleciona tudo), ctrl+x (recorta) e ctrl+v (cola).
Não estamos falando a mesma língua mesmo, isso q vc está dizendo não faz o q eu qro q faça. Vou ver se acho algum jeito de fazer no windows mesmo ou então pedindo ajuda em outro fórum para fazer no linux. Valeu a tentativa de qualquer forma, abraço.

mkleber


cygnusx-1

Citação de: mkleber online 10 de Janeiro de 2011, 21:19
Cara veja nesse tópico, tem uma extensao que faz o que eu acho que vc precisa !

http://ubuntuforum-br.org/index.php?topic=77661.msg431942#msg431942
Vc fala da Nautilus Easy Union? Não entendi como configurar por aquele vídeo.