टेक्स्ट फ़ाइल के डेटा का उपयोग करके फ़ाइल नाम साफ़ करें


2

मुझे फ़ोल्डर फ़ाइल नामों का एक गुच्छा साफ़ करने की आवश्यकता है। संभवतः फ़ाइल के शीर्षक भी। मैं वर्तमान में ऐसा करने के लिए इस पर्ल स्क्रिप्ट का उपयोग कर रहा था लेकिन मैं कुछ समस्याओं में भाग गया।

  1. यदि फ़ाइल नाम में पहले से ही वर्ष के आसपास कोष्ठक है, तो यह एक और सेट जोड़ता है।
  2. मैं शीर्षकों के साथ-साथ शीर्षकों में आम "हस्ताक्षरों" को हटाने के लिए एक पाठ फ़ाइल का उपयोग करना चाहूंगा। This.Movie.Blah.(2012) [1080p] MP4।

    वर्तमान में मैंने जो स्क्रिप्ट लिखी है, उसका .एक जगह के रूप में इरादा है और (xxxx)वर्ष भर जोड़ता है । स्क्रिप्ट चलाना परिणाम होगा This Movie Blah ((2012)) [1080p] MP4।

इसके अलावा मैं उन "हस्ताक्षरों" को हटाना चाहूंगा जो कि फ़ाइल नाम से पाठ फ़ाइलों के मूल्यों (पंक्तिबद्ध, सीएसवी नहीं) से मेल खाते हैं इसलिए This.Movie.Blah.(2012) [1080p] MP4वापस आ जाएंगेThis Movie Blah (2012)

use warnings;
use strict;
use File::Copy;

my $oldname;

opendir(my $d, ".") or die $!;
while(readdir $d) {
    if (-d $_ and $_ ne "." and $_ ne "..")
    {
        $oldname = $_;
        $_ =~ s/\./ /g;
        $_ =~ s/(\d{4})/($1)/g;
        move($oldname,$_);
    }
    }
closedir $d;

मैंने अभी अपनी पहली प्रोग्रामिंग भाषाओं में से एक के रूप में पर्ल को सीखने की कोशिश करना शुरू किया था इसलिए मैं इस भाषा के लिए अपेक्षाकृत नया हूं।

जवाबों:


0

नियमित अभिव्यक्तियों के प्रश्न के रूप में (पैटर्न के लिए पाठ की खोज करना और उनके आधार पर प्रतिस्थापन करना), यह कठिन नहीं है; मुझे आश्चर्य है कि 15 घंटे के बाद कोई जवाब नहीं हैं। मैं पर्ल में उतना अनुभवी नहीं हूं जितना कि मैं होना चाहता हूं, लेकिन साल-दर-साल की समस्या के लिए एक सीधा दृष्टिकोण इसे बाद में पता लगाने और फिर इसे ठीक करने के लिए है:

        $_ =~ s/(\d{4})/($1)/g;
        $_ =~ s/(\((\d{4})\))/$1/g;

दूसरा कथन ((2012))मध्य छः वर्णों की तलाश और वापसी करता है; यानी, (2012)। "आम हस्ताक्षर" के रूप में, कैसे के बारे में

        $_ =~ s/ \[1080p\] MP4$//;

? (का प्रयोग करें \[और \]रोकने के लिए […]एक सीमा के रूप में व्याख्या की जा रही है, और $स्ट्रिंग के अंत का उल्लेख करने के।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.