Как объединить много папок в одну?

У меня есть много папок, которые мне нужно объединить. Я знаю, что если я перетаскиваю содержимое из всех них поверх другого, я могу объединить их. Но с таким количеством папок у меня уйдут часы.

Итак, мне нужен способ объединения всех папок внутри директории с помощью bash-скрипта или программы, которая делает это.

РЕДАКТИРОВАТЬ Как плюс, мне бы хотелось, чтобы структура папок была сохранена и во всех папках были папки с одинаковыми именами. Эти папки должны быть объединены.

4
задан 17 September 2011 в 13:49

3 ответа

Я бы предложил выполнить поиск в родительской папке для . и включите все подпапки. Это позволит вам выбрать все файлы и затем переместить их в другую папку. Это объединит все содержимое в новую папку.

0
ответ дан 17 September 2011 в 13:49

Если это ваша структура папок ...

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

... а ты хочешь ...

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

... тогда вы можете:

  1. Перейти в fol1;
  2. нажать Ctrl-A, чтобы выбрать все подпапки;
  3. перетащить их в folB. Наутилус увидит, что уже существует subfolA и т. Д., И спросит, хотите ли вы объединить [этот / все из них] автоматически.

Или вы можете открыть терминал и

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

Это тоже произойдет автоматически. Подробное объяснение, на случай, если новичок bash встречает этот ответ:

  • cd меняет каталог.
  • cp копий; первая папка является источником, вторая - местом назначения.
  • -r означает спуск в подпапки («recurse»).
  • ../fol2/* означает one directory up / into fol2 / all files and folders you can find there.
  • ./ является текущим каталогом.
  • [Тысяча сто двадцать семь]
0
ответ дан 17 September 2011 в 13:49

Следующий скрипт на python должен делать то, что вы хотите. Просто скопируйте содержимое файла (скажем, sc1.py) в папку, содержащую все подпапки, которые вы хотите объединить. Затем выполните команду chmod +x sc1.py, а затем запустите этот файл в этой папке ./sc1.py, и вы должны получить результат. Этот скрипт будет делать следующее:

Скажем, вы работаете в папке /home/bob/foo и у вас есть сотни папок bar1, bar2, ...., bar99 внутри папки. foo.

Запустите сценарий из /home/bob/foo/, и он создаст папку /home/bob/foo/Merged и передаст содержимое всех папок bar1, bar2 и т. Д. ... в папку Merged. Структура каталогов внутри папок bar1, bar2 и т. Д. Останется без изменений

Вы можете проверить это где-нибудь, чтобы убедиться, что это то, что вы просили.

#!/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)

Примечание: я абсолютный новичок в написании сценариев и только что выучил большинство этих команд. Если есть предложения по улучшению от людей вокруг - очень признателен.

0
ответ дан 17 September 2011 в 13:49

Другие вопросы по тегам:

Похожие вопросы: