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.
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.
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.
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:
fol1
; Ctrl-A
para selecionar todas as subpastas; 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. 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.