所以基本上我在文件夹和子文件夹中有多个 .txt 文件,我想将它们移动到新文件夹。
尽管有些文件名称相同,但它们的内容可能不同,所以我想保留它们所有,但重命名。
我使用的方法:
#!/usr/bin/env python3
import os
import shutil
source_dir = "/home/source_folder"; target_folder = "/home/target_folder"; extensions = (".txt",)
dup = 1
for root, dirs, files in os.walk(source_dir):
for name in files:
if name.endswith(extensions):
file = root+"/"+name
while os.path.exists(target_folder+"/"+name):
name = name[:name.rfind(".")]+"_"+str(dup)+name[name.rfind("."):]
dup = dup+1
shutil.move(file, target_folder+"/"+name)
问题- 所有文件都用数字重命名,而不仅仅是重复文件。
完美的解决方案是仅将日期层次添加到名称中查找重复项。
这段代码有修复吗?
提前致谢!
答案1
首先,我将向您展示目录结构。我将txt
文件从移动src1
到dest1
.
├── dest1
└── src1
├── abc.txt
├── adx.txt
├── logs
│ ├── nft.txt
│ ├── orm.txt
│ └── yuy
├── lol
├── nft.txt
├── orm.txt
└── yuy
您可以使用命令
find src1/ -regextype sed -regex '.*/*\.txt' -exec mv --backup=t -t dest1/ {} +
其中是包含文件src1
的源文件夹,是目标文件夹。如果存在同名文件,则文件名将以txt
dst1
.~1~
.
├── dest1
│ ├── abc.txt
│ ├── adx.txt
│ ├── nft.txt
│ ├── nft.txt.~1~
│ ├── orm.txt
│ └── orm.txt.~1~
└── src1
├── logs
│ └── yuy
├── lol
└── yuy