linux - अंतर्निहित नाम के बजाय पर्ल नाम उपयोगिता का नाम लें




perl bash (3)

कई साइटें (विभिन्न SO लेखों सहित) फ़ाइलों का नाम बदलने के लिए पर्ल अभिव्यक्तियों का उपयोग करके "नाम बदलें" का उपयोग करने के बारे में बात करती हैं।

यह सही होगा, लेकिन स्पष्ट रूप से यह मेरे नाम की उपयोगिता नहीं है, और इनमें से कोई भी लेख समझ में नहीं आता है कि "नाम बदलें" के कई संस्करण हैं और मुझे यह नहीं लगता कि पर्ल अभिव्यक्तियों को स्वीकार करने वाले संस्करण को कहां प्राप्त किया जाए।

here , here और here वर्णित अधिक शक्तिशाली नामकरण उपयोगिता पर मैं अपना हाथ कैसे प्राप्त कर सकता हूं?

मैं फेडोरा 20 चला रहा हूं। मेरा वर्तमान नाम बदलें कमांड util-linux पैकेज से है और स्पष्ट रूप से मुझे पर्ल संस्करण की आवश्यकता है, जो बेहतर है।


आप इसे cpan का उपयोग करके स्थापित कर सकते हैं, जो पाइथन के लिए पाइप के समान पर्ल रिपोजिटरी है।

सीपीएन का उपयोग करने पर एक tutorial

यदि आप इसे नाम बदलने का प्रयास करते हैं तो ऐसा लगता है

नाम बदलें --help
कॉल करें: फाइलों से नाम बदलें ...

पर्ल नाम बदलने के लिए आप निम्न कार्य कर सकते हैं। आपको कुछ निर्भरताओं को स्थापित करने की आवश्यकता हो सकती है, आप आमतौर पर केवल एंटर दबा सकते हैं

cpan
सीपीएन cpan > फ़ाइल स्थापित करें :: नाम बदलें
सीपीएएन: स्टेरियल लोड ओके (v2.20)
पढ़ने के लिए जा रहे हैं '/root/.cpan/Metadata'
डाटाबेस बुधवार को उत्पन्न हुआ था, 30 सितंबर 2015 08:17:02 जीएमटी
मॉड्यूल 'फ़ाइल :: नाम बदलें' के लिए चल रहा है
....
रनिंग बिल्ड स्थापित करें
/Usr/local/share/man/man1/rename.1 इंस्टॉल करना
/Usr/local/share/perl5/File/Rename.pm इंस्टॉल करना
/Usr/local/share/man/man3/File::Rename.3pm इंस्टॉल करना
इंस्टॉल / usr / स्थानीय / बिन / नाम बदलें
लेखन /usr/local/lib64/perl5/auto/File/Rename/.packlist
RMBARKER / फ़ाइल का नाम बदलें-0.20.tar.gz
./Build इंस्टॉल - ठीक है

इस तरह आप सीपीए से नाम स्थापित करेंगे।
अगला यह आपके सिस्टम पर काम करने के लिए है। जैसा कि आपके पास एक और नाम बदल सकता है।

which rename  
/usr/bin/rename  

जब आप वास्तव में यह चाहते हैं।

/usr/local/bin/rename --help
Usage:
    rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E *perlexpr*]*|*perlexpr*
    [ *files* ]

Options:
    -v, -verbose
            Verbose: print names of files successfully renamed.

    -n, -nono
            No action: print names of files to be renamed, but don't rename.

    -f, -force
            Over write: allow existing files to be over-written.

    -h, -help
            Help: print SYNOPSIS and OPTIONS.

    -m, -man
            Manual: print manual page.

    -V, -version
            Version: show version number.

    -e      Expression: code to act on files name.

            May be repeated to build up code (like "perl -e"). If no -e, the
            first argument is used as code.

    -E      Statement: code to act on files name, as -e but terminated by
            ';'.

मैंने इसे /usr/bin/ में डाल दिया है, लेकिन यह सुनिश्चित करने के लिए थोड़ा अलग नाम के साथ कि मैंने किसी भी मौजूदा स्क्रिप्ट / प्रोग्राम को पुराना नहीं माना है।

ln -s /usr/local/bin/rename /usr/bin/rename.pl

डेबियन-परिवार ( .deb ) distros के लिए, मैं @ SzG के answer की अनुशंसा करता हूं।

RedHat-family ( .rpm ) distros (उदाहरण के लिए फेडोरा) के लिए, यदि आपका समय अनमोल है (मेरी तरह), तो आप cpan माध्यम से स्रोत से डाउनलोड, संकलन और इंस्टॉल कर सकते हैं, cpan कमांड:

# Install (replace `rename-1.9` below with another version if desired)
curl -L "http://search.cpan.org/CPAN/authors/id/P/PE/PEDERST/rename-1.9.tar.gz" | tar -xz && ( cd "rename-1.9"; perl "Makefile.PL"; make && make install )

# Cleanup
rm -rf "rename-1.9"

ध्यान दें:

INSTALL_BASE को आधार स्थापना निर्देशिका को संशोधित करने के लिए सेट किया जा सकता है।

उदाहरण के लिए perl "Makefile.PL" INSTALL_BASE=/usr/local

source


मैं केवल डेबियन के लिए बात कर सकता हूं। दो कार्यक्रमों को बुलाया जाता है

  • /usr/bin/rename.ul उपयोग util-linux पैकेज से (इसलिए .ul प्रत्यय)
  • /usr/bin/prename perl पैकेज से

वास्तविक rename आदेश /etc/alternatives तंत्र के माध्यम से काम करता है, जिससे

  • /usr/bin/rename /etc/alternatives/rename /usr/bin/rename लिए एक सिम्लिंक है
  • /etc/alternatives/rename /usr/bin/prename

एक ही समस्या मुझे सिग्विन पर चिपका रही है, जो एक Red Hat उत्पाद है, इसलिए फेडोरा के समान होना चाहिए। मैं सोमवार को अपने कंपनी लैपटॉप पर एक नज़र डालेगा। और मुझे लगता है कि पर्ल-नाम ने कभी-कभी वहां काम किया था। संभवतः मैंने उपयोग util-linux स्थापित करने से पहले।

यदि आप पर्ल-नाम को /usr/local/bin इंस्टॉल करते हैं तो इसका उपयोग उपयोग util-linux से rename पर प्राथमिकता होगी। /usr/local/share/man/man1/ स्थापित होने पर मैनपेज के लिए वही जाता है।

मैंने अभी गिटूब पर एक अलग पर्ल-नाम पैकेज बनाया है: https://github.com/subogero/rename





file-rename