Oke, saya memperbaiki kode saya. Anda perlu melakukan dua hal. Pertama, Anda harus memiliki "directory_of_Files" yang berisi semua file dan subfolder dengan file. Selanjutnya Anda harus memiliki folder induk baru, "new_parent_directory", yang kosong. new_parent_directory akan diatur oleh akhiran file dari file dalam "directory_of_Files". Pada dasarnya, skrip ini mencari semua file di dalam direktori, dan direktori di dalam direktori itu, kemudian, membuat daftar akhir file dan kemudian membuat direktori di direktori baru berdasarkan akhiran file tersebut, dan kemudian mengambil semua file dalam direktori induk dan memindahkannya ke direktori yang baru didirikan.
Jika Anda memiliki python diinstal .....
Di terminal, ketik
python
kemudian,
import os
kemudian,
#this is ths directory that contains all your files
#YOU MUST CHANGE THIS!!!!!!
directory_of_Files = "/Users/name/Desktop/test1"
#AND YOU MUST CHANGE THIS!!!!!!
new_parent_directory = "/Users/name/Desktop/newhometest"
#From here down, it's all magic.
all_subfolders = [x[0] for x in os.walk(directory_of_Files)]
#Get the full file name and only the files
filenames=[]
for subfolder in all_subfolders:
os.chdir(subfolder)
for file in filter(os.path.isfile, os.listdir(os.getcwd())):
if not file.startswith("."):
filenames.append(os.getcwd()+"/"+file)
#get the file endings
all_files_endings = []
for i in filenames:
all_files_endings.append(i.split(".",1)[1])
#remove the duplications
all_files_endings = list(set(all_files_endings))
#create some folders in the new_directory with the file endings
for fileExtensions in all_files_endings:
os.mkdir(new_parent_directory + "/" + fileExtensions)
#move the files from their old destination to their new destination
newnames=[]
for subfolder in all_subfolders:
os.chdir(subfolder)
for file in filter(os.path.isfile, os.listdir(os.getcwd())):
if not file.startswith("."):
newnames.append(new_parent_directory+"/"+file.split(".",1)[1]+"/"+file)
print file
if len(filenames) == len(newnames):
for i in range(len(filenames)):
shutil.move(filenames[i], newnames[i])
Saya menguji ini pada Mac OSX 10.11 dengan python 2.7. Anda juga bisa menyalin semua kode ke file teks, menyimpannya sebagai "sesuatu.py", dan kemudian menjalankannya dari terminal dengan kode,
python something.py
find
karena Anda telah menandai Q ini, tetapi ide yang lebih baik adalah menggunakantar
, yang memiliki sakelar untuk mendukung ini. Doa klasik adalah (di bagian atas pohon sumber)tar cf - | (cd target;tar xf -)
yang menyalin seluruh pohon. Anda ingin melihatman
halaman untuktar
melihat bagaimana memilih hanya file yang Anda inginkan.