我有很多文件夹需要合并。我知道如果我把所有文件夹的内容拖到另一个文件夹上,就可以合并它们。但是文件夹太多了,这会花我几个小时。
因此,我需要一种方法来合并目录内的所有文件夹,使用 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
... 然后你可以:
- 进入
fol1
; - 点击
Ctrl-A
选择所有子文件夹; - 将它们拖入
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
....。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)
注意:我是脚本编写的初学者,刚刚学会了大部分命令。如果周围的人能提出改进建议,我将不胜感激。