如何将多个文件夹合并为一个?

如何将多个文件夹合并为一个?

我有很多文件夹需要合并。我知道如果我把所有文件夹的内容拖到另一个文件夹上,就可以合并它们。但是文件夹太多了,这会花我几个小时。

因此,我需要一种方法来合并目录内的所有文件夹,使用 bash 脚本或执行此操作的程序。

编辑 作为一个优点,我希望文件夹结构能够保留,并且所有文件夹内都会有同名的文件夹。这些文件夹需要合并。

答案1

我建议在父文件夹中搜索并包括所有子文件夹。这将允许您选择所有文件,然后将它们移动到另一个文件夹中。这会将所有内容合并到新文件夹中。

答案2

如果这是您的文件夹结构...

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。Nautilus 将看到已经存在一个subfolA等,并会询问您是否要自动合并 [这一个/所有]。

或者你可以打开终端并

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

这也会自动合并。详细的解释,以防 Bash 新手遇到此答案:

  • cd改变目录。
  • cp副本;第一个文件夹是源,第二个文件夹是目标。
  • -r意味着进入子文件夹(“递归”)。
  • ../fol2/*方法one directory up / into fol2 / all files and folders you can find there
  • ./是当前目录。

答案3

以下 python 脚本应该可以完成您想要的操作。只需将内容复制到sc1.py包含要合并的所有子文件夹的文件夹中的文件(例如名为)中。然后运行命令chmod +x sc1.py,然后在该文件夹中运行此文件./sc1.py,您就会得到结果。此脚本将执行以下任务:

假设您正在文件夹中工作,并且文件夹内/home/bob/foo有数百个文件夹bar1,,bar2....。bar99foo

运行脚本/home/bob/foo/,它将创建一个文件夹/home/bob/foo/Merged,并将传输文件夹内所有文件夹等的内容bar1。文件夹等内的目录结构将保持不变bar2Mergedbar1bar2

您可能想要在某个地方测试一下,看看这是否是您所要求的。

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

注意:我是脚本编写的初学者,刚刚学会了大部分命令。如果周围的人能提出改进建议,我将不胜感激。

相关内容