我有12,000多个文件需要整理。包含所有文件夹,但文件现在位于展平的文件结构中。
我的文件夹和文件都以它们应该存在的路径命名。例如,在一个目录中,我有一个名为\textures
的文件夹和另一个名为\textures\actors\bear
的文件夹,但是没有{{} 1}}文件夹。我正在努力开发一个宏,它将把这些文件夹放在每个文件夹和文件名所暗示的正确位置。我希望能够自动将它们排序到\textures\actors
内部是textures
,里面是actors
。但是,有超过12,000个文件,因此我正在寻找一个自动化流程来确定所有这些并尽可能地执行此操作。
是否有一个脚本会查看每个文件或文件夹名称,并检测文件或文件夹应该位于目录中的哪个文件夹,并自动将它们移动到那里,以及创建在给定路径中不存在的任何文件夹需要的?
由于
答案 0 :(得分:0)
给定这样的目录结构:
$ ls /tmp/stacktest
\textures
\textures\actors\bear
fur.png
\textures\actors\bear\fur2.png
下面的python脚本将把它变成这个:
$ ls /tmp/stackdest
textures/actors/bear
fur.png
fur2.png
Python脚本:
from os import walk
import os
# TODO - Change these to correct locations
dir_path = "/tmp/stacktest"
dest_path = "/tmp/stackdest"
for (dirpath, dirnames, filenames) in walk(dir_path):
# Called for all files, recu`enter code here`rsively
for f in filenames:
# Get the full path to the original file in the file system
file_path = os.path.join(dirpath, f)
# Get the relative path, starting at the root dir
relative_path = os.path.relpath(file_path, dir_path)
# Replace \ with / to make a real file system path
new_rel_path = relative_path.replace("\\", "/")
# Remove a starting "/" if it exists, as it messes with os.path.join
if new_rel_path[0] == "/":
new_rel_path = new_rel_path[1:]
# Prepend the dest path
final_path = os.path.join(dest_path, new_rel_path)
# Make the parent directory
parent_dir = os.path.dirname(final_path)
mkdir_cmd = "mkdir -p '" + parent_dir + "'"
print("Executing: ", mkdir_cmd)
os.system(mkdir_cmd)
# Copy the file to the final path
cp_cmd = "cp '" + file_path + "' '" + final_path + "'"
print("Executing: ", cp_cmd)
os.system(cp_cmd)
该脚本读取dir_path
中的所有文件和文件夹,并在dest_path
下创建一个新的目录结构。确保您没有将dest_path
放在dir_path
内。