नीचे दी गई पाइथन स्क्रिप्ट काम करती है। छिपी हुई फ़ाइलों को एक फ़ोल्डर में अलग से संग्रहीत किया जाता है, साथ ही बिना एक्सटेंशन के फाइलें भी।
चूंकि इसका उपयोग व्यापक उद्देश्यों के लिए किया जा सकता है, इसलिए मैंने कुछ विकल्प जोड़े:
- आप ऐसे एक्सटेंशन सेट कर सकते हैं जिन्हें आप "पुनर्गठन" से बाहर करना चाहते हैं। यदि आप बस सभी को स्थानांतरित करना चाहते हैं, तो सेट करें
exclude = ()
- आप चुन सकते हैं कि खाली फ़ोल्डर (
remove_emptyfolders = True
या False
) के साथ क्या करना है
- यदि आप उन्हें स्थानांतरित करने के बजाय फ़ाइलों को कॉपी करना चाहते हैं, तो लाइन को प्रतिस्थापित करें:
shutil.move(subject, new_dir+"/"+name)
द्वारा:
shutil.copy(subject, new_dir+"/"+name)
लिपी:
#!/usr/bin/env python3
import os
import subprocess
import shutil
# --------------------------------------------------------
reorg_dir = "/path/to/directory_to_reorganize"
exclude = (".jpg") # for example
remove_emptyfolders = True
# ---------------------------------------------------------
for root, dirs, files in os.walk(reorg_dir):
for name in files:
subject = root+"/"+name
if name.startswith("."):
extension = ".hidden_files"
elif not "." in name:
extension = ".without_extension"
else:
extension = name[name.rfind("."):]
if not extension in exclude:
new_dir = reorg_dir+"/"+extension[1:]
if not os.path.exists(new_dir):
os.mkdir(new_dir)
shutil.move(subject, new_dir+"/"+name)
def cleanup():
filelist = []
for root, dirs, files in os.walk(reorg_dir):
for name in files:
filelist.append(root+"/"+name)
directories = [item[0] for item in os.walk(reorg_dir)]
for dr in directories:
matches = [item for item in filelist if dr in item]
if len(matches) == 0:
try:
shutil.rmtree(dr)
except FileNotFoundError:
pass
if remove_emptyfolders == True:
cleanup()
यदि अवांछित डुप्लिकेट फ़ाइलों की ओवरराइटिंग का जोखिम है
कुछ अतिरिक्त लाइनों की कीमत पर, हम संभावित डुप्लिकेट को अधिलेखित करने से रोक सकते हैं। नीचे दिए गए कोड के साथ, डुप्लिकेट का नाम बदल दिया जाएगा:
duplicate_1_filename, duplicate_2_filename
आदि।
लिपी:
#!/usr/bin/env python3
import os
import subprocess
import shutil
# --------------------------------------------------------
reorg_dir = "/path/to/directory_to_reorganize"
exclude = (".jpg") # for example
remove_emptyfolders = True
# ---------------------------------------------------------
for root, dirs, files in os.walk(reorg_dir):
for name in files:
subject = root+"/"+name
if name.startswith("."):
extension = ".hidden_files"
elif not "." in name:
extension = ".without_extension"
else:
extension = name[name.rfind("."):]
if not extension in exclude:
new_dir = reorg_dir+"/"+extension[1:]
if not os.path.exists(new_dir):
os.mkdir(new_dir)
n = 1; name_orig = name
while os.path.exists(new_dir+"/"+name):
name = "duplicate_"+str(n)+"_"+name_orig
n = n+1
newfile = new_dir+"/"+name
shutil.move(subject, newfile)
def cleanup():
filelist = []
for root, dirs, files in os.walk(reorg_dir):
for name in files:
filelist.append(root+"/"+name)
directories = [item[0] for item in os.walk(reorg_dir)]
for dr in directories:
matches = [item for item in filelist if dr in item]
if len(matches) == 0:
try:
shutil.rmtree(dr)
except FileNotFoundError:
pass
if remove_emptyfolders == True:
cleanup()
संपादित करें
ओपी को ध्यान में रखते हुए, हम सभी उपयोग करने के तरीके पर एक निर्देश जोड़ना भूल गए। चूंकि डुप्लिकेट प्रश्न दिखाई देते हैं ( और कर सकते हैं ), फिर भी यह उपयोगी हो सकता है।
कैसे इस्तेमाल करे
- किसी एक स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे इस रूप में सहेजें
reorganize.py
स्क्रिप्ट के मुख्य भाग में, लक्षित निर्देशिका (फ़ाइलों को पुनर्गठित करने के लिए) के साथ सेट करें:
reorg_dir = "/path/to/directory_to_reorganize"
(यदि निर्देशिका में स्थान है तो उद्धरणों का उपयोग करें)
संभव एक्सटेंशन जिन्हें आप बाहर करना चाहते हैं (शायद नीचे की तरह कोई नहीं):
exclude = ()
और यदि आप बाद में खाली फ़ोल्डर निकालना चाहते हैं:
remove_emptyfolders = True
कमांड के साथ स्क्रिप्ट चलाएँ:
python3 /path/to/reorganize.py
NB यदि आप फ़ाइलों को स्थानांतरित करने के बजाय कॉपी करना चाहते हैं , तो प्रतिस्थापित करें:
shutil.move(subject, new_dir+"/"+name)
द्वारा:
shutil.copy(subject, new_dir+"/"+name)
कृपया पहले एक छोटे नमूने पर प्रयास करें।
-iname '*.*'
कोने मामलों के बारे में मैं ... अच्छा विचार चिंतित था का ध्यान रखना चाहिए!