Como mesclar muitas pastas em uma?

4

Eu tenho muitas pastas que preciso mesclar. Eu sei que se eu arrastar o conteúdo de todos eles para outro, posso mesclá-los. Mas com tantas pastas, levarei horas.

Então, eu preciso de uma maneira de mesclar todas as pastas dentro de um diretório, com um script bash ou um programa que faça isso.

EDIT Como um acréscimo, eu gostaria que a estrutura de pastas fosse preservada e dentro de todas as pastas existissem pastas com os mesmos nomes. Essas pastas precisam ser mescladas.

    
por user25119 17.09.2011 / 10:59

3 respostas

2

Sugiro fazer uma pesquisa na pasta pai para . e incluir todas as subpastas. Isso permitirá que você selecione todos os arquivos e os mova para outra pasta. Isso mesclará todo o conteúdo na nova pasta.

    
por vyse 24.09.2011 / 22:41
1

Se esta é a sua estrutura de pastas ...

fol1
| '-subfolA
| | '-one.txt
| '-subfolB
|   '-two.txt
fol2
 '-subfolA
  | '-een.txt
  '-subfolB
    '-twee.txt

... e você quer ...

fol1
| '-subfolA
| | '-een.txt
| | '-one.txt
| '-subfolB
|   '-twee.txt
|   '-two.txt
fol2

... então você pode:

  1. Entre em fol1 ;
  2. pressione Ctrl-A para selecionar todas as subpastas;
  3. arraste-os para folB . O Nautilus verá que já existe um subfolA etc e perguntará se você deseja mesclar [este / todos] automaticamente.

Ou você pode abrir o terminal e

cd path/to/fol1
cp -r ../fol2/* ./

Isso também automerges. Explicação elaborada, apenas no caso de um novato bash encontrar esta resposta:

  • cd altera o diretório.
  • cp de cópias; a primeira pasta é a fonte, a segunda o destino.
  • -r significa descer em subpastas ('recurse').
  • ../fol2/* significa one directory up / into fol2 / all files and folders you can find there .
  • ./ é o diretório atual.
por Esteis 21.02.2012 / 18:38
0

O seguinte script python deve fazer o que você quiser. Basta copiar o conteúdo em um arquivo (denominado sc1.py , digamos) na pasta que contém todas as subpastas que você deseja mesclar. Em seguida, execute o comando chmod +x sc1.py e, em seguida, execute esse arquivo nessa pasta ./sc1.py e você deverá obter o resultado. O que esse script fará é o seguinte:

Digamos que você esteja trabalhando na pasta /home/bob/foo e tenha centenas de pastas bar1 , bar2 , ...., bar99 dentro da pasta foo .

Execute o script em /home/bob/foo/ e ele criará uma pasta /home/bob/foo/Merged e transferirá o conteúdo de todas as pastas bar1 , bar2 etc ... dentro da pasta Merged . As estruturas de diretório dentro das pastas bar1 , bar2 etc permanecerão intactas

Você pode querer testar isso em algum lugar para ver que isso é o que você pediu.

#!/usr/bin/env python

import subprocess as sbp
import os

path=os.getcwd()
fol = os.listdir(path)
p2 = os.path.join(path,'Merged')

sbp.Popen(['mkdir','Merged'])

for i in fol:
    if os.path.isdir(i)==True:
        if i!='Merged':
            p1 = os.path.join(path,i)
            p3 = 'cp -r "' + p1 +'"/* ' + p2
            sbp.Popen(p3,shell=True)

Observação: sou um iniciante absoluto em scripts e aprendi apenas a maioria desses comandos. Se houver sugestões para melhorar das pessoas ao redor - muito apreciado.

    
por ste_kwr 21.02.2012 / 20:42