मैक ओएस एक्स, बैच प्रोसेसिंग में कई फाइलों का नाम बदलना


57

मैं एक नाम बदलने के माध्यम से लिनक्स में फ़ाइल का नाम बदला करता था:

rename 's/old_pattern/new_pattern/g' *glob

क्या मैक ओएस एक्स (स्नो लेपर्ड) में भी कुछ ऐसा ही है?


निम्न आलेख बताता है कि renameमैक ओएस एक्स पर कैसे स्थापित किया जाए: macosxhints.com/article.php?story=20050630022203488
पॉल आर

बैकटिक्स आपकी टिप्पणी में दिखाई नहीं दे रहे हैं - आपको शायद इसे उत्तर के रूप में जोड़ना चाहिए या अपने प्रश्न को अपने समाधान में शामिल करने के लिए संपादित करना चाहिए।
पॉल आर

1
मैंने अब तक का सबसे अच्छा त्वरित समाधान बिल्ट-इन ऑटोमेकर का उपयोग किया है। : कदम मदद से आसान कदम के लिए इस लेख को देखें tuaw.com/2008/11/11/...
निलय

मैं निले के जवाब को वोट करूंगा अगर यह टिप्पणी नहीं थी ...
शून्य

जवाबों:


49

Homebrew के साथ , OS X के लिए एक पैकेज मैनेजर:

brew install rename 

फिर आप renameलिनक्स में उसी कमांड को चला सकते हैं ।


3
आप MacPorts पैकेज का उपयोग भी कर सकते हैं: पोर्ट स्थापित p5-file-rename
Miquel Adrover

2
@MiquelAdrover: लेकिन पोर्ट के साथ आपको rename-5.22(जहां 22 स्थापित संस्करण है) का उपयोग करने की आवश्यकता हैrename
मेम

आप प्रतीकात्मक लिंक का नाम बदल सकते हैंsudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
एको

26

ZSH की शक्ति का बुद्धिमानी से उपयोग करें ( zshयदि आप उन गरीब आत्माओं में से एक हैं जो डिफ़ॉल्ट रूप से इसका उपयोग नहीं करते हैं तो टर्मिनल में टाइप करें):

autoload zmv
zmv '(*).htm' '$1.html'

ZMV MMV सिंटैक्स का अनुसरण करता है


लेकिन क्या यह भी रेगेक्स प्रतिस्थापन की अनुमति देता है? ऐसा लगता है कि यह किसी प्रकार का बढ़ा हुआ गोलाकार गोला है।
गणित

4
@brubelsabs: हाँ, zmv regexp प्रतिस्थापन कर सकता है । मेल खाने वाली फ़ाइलों के लिए *user*.html, एक्सटेंशन को .htmlबदलने और सभी घटनाओं को बदलने के rcलिए final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: मुझे लगता है कि अपने उत्तर की जरूरत में zmv उदाहरण -wया इसके वाइल्डकार्ड के आसपास कोष्ठक।
क्रिस जॉन्सन

मुझे वास्तव में यह सुझाव पसंद है क्योंकि आपको मैक (जैसे काढ़ा) पर कुछ भी अतिरिक्त स्थापित करने की आवश्यकता नहीं है, लेकिन यह आपको सिंटैक्स जैसे आसान एमएमवी का उपयोग करने की अनुमति देता है।
हे

+1 अच्छा है। मैं करने के लिए इस्तेमाल किया जा रहा हूँ regexs से मतभेद के जोड़े: 1) सभी पाने के *बजाय का उपयोग करें .**?गैर-लालची की तरह काम करने लगता है .*?। 2) मेरे लिए, ^और $स्ट्रिंग की शुरुआत और अंत के लिए ऐसा लग रहा था कि यह कुछ भी नहीं होने का कारण है
user56reinstatemonica8

21

अनाड़ी मुझे:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 

और अगर आप इसका उपयोग करना चाहते हैं जैसे मैं अक्सर इस तरह करता हूं:

rename 's/old/new/' *.files

मैं ~ / बिन / नाम बदलने में इस लिट्टी स्क्रिप्ट का उपयोग करने की सलाह देता हूं:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done

आपकी स्क्रिप्ट मेरे लिए काम नहीं करती है "ACDC AC-DC ACDC * का नाम बदलें"> परिणाम-> srew: ACDC नहीं पढ़ सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं है ", मैंने linux से rename का उपयोग स्थापित किया है और अब यह awyay
Holms

5

आप MacPorts को स्थापित करने और renameutilsपैकेज को स्थापित करने का प्रयास कर सकते हैं :

renameutils @ 0.10.0 (sysutils)

renameutils प्रोग्राम का एक सेट है जिसका नामकरण फ़ाइलों को तेज़ी से और कम बोझिल बनाने के लिए किया गया है


इस पैकेज में "नाम बदलें" कमांड नहीं है।
जुआनपाब्लो

1
मैंने यह नहीं कहा कि यह करता है qmvऐसा लगता है कि यह काम करता है।
लजुएट

qmvएक महान उपकरण है, जबकि साधारण रेगेक्स नाम के लिए थोड़ा बहुत काम है, यह बुद्धिमानी से नामकरण और बड़ी संख्या में मनमानी फ़ाइलों को स्थानांतरित करने के लिए शानदार है
sapht

4

नाम बदलने के विभिन्न संस्करण हैं । ऐसा लगता है कि आप पर्ल-आधारित की तलाश कर रहे हैं।

इस उपयोगिता का एक संस्करण File :: Rename Perl मॉड्यूल के साथ आता है । आप इसे कुछ इस तरह से स्थापित कर सकते हैं sudo cpan -i File::Rename

या, आप डेबियन के पर्ल पैकेज से नाम बदलकर जा सकते हैं । यह डाउनलोड करने के लिए सिर्फ एक फ़ाइल है। इसे कभी भी जहां आप चाहें पसंद करें और इसे चोद दें ताकि यह निष्पादन योग्य हो।


एक वैकल्पिक zmv उपकरण है जो zsh के साथ आता है । इसमें समान सिंटैक्स नहीं है, लेकिन यह आपके ओएस के साथ आता है और यह आसानी से कई सामान्य मामलों की देखभाल कर सकता है।


पर्ल नाम बदलने क्या इस सवाल का एक उदाहरण के रूप में दिखाता है।
क्वैक

2

Macs पर मैं अरस्तू पगलतज़िस का स्वतंत्र रूप से उपलब्ध उपयोग करता हूं rename, जो कि डेबियन की तरह पर्ल-आधारित है। आप इसे यहाँ प्राप्त कर सकते हैं । या पहले इसे पढ़ने के लिए यहां जाएं - हमेशा एक अच्छा विचार।

आपको उस जगह को अपने स्थान पर रखने $PATHऔर इसे निष्पादन योग्य ( chmod +x rename) बनाने की आवश्यकता है और फिर आप जाने के लिए अच्छे हैं।


2

यह मुश्किल नहीं होना चाहिए, लेकिन जाहिरा तौर पर यह है। उदाहरण के लिए, मैं एफ़आईएफ से एआईएफसी तक सभी फ़ाइल एक्सटेंशन का नाम बदलना चाहता हूं।

find . -iname "*.aiff" -exec bash -c 'mv "$0" "${0%\.aiff}.aifc"' {} \;

1

यदि आप GUI की तलाश कर रहे हैं, तो Name Mangler का प्रयास करें । इसमें एक "पूर्वावलोकन" सुविधा है जो दिखाती है कि यदि आप नाम बदलने के साथ अनुसरण करते हैं तो क्या होगा।



0

यदि आपको Sublime Text की बहु-पसंद है तो आप इसे qmv के साथ उपयोग कर सकते हैं:

qmv --editor = "/ usr / bin / s3 -w" फाइलें


0

मैं अभी आगे बढ़ा और अपने पसंदीदा को देखा, जिसे मैंने perl-rename के रूप में संदर्भित किया है, renameजहां कमांड इस तरह से मदद करता है:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

यही कारण है कि मुझे पता है कि मुझे वह पसंद है जो मुझे पसंद है।

मैक के लिए, यहां तक ​​कि होमब्रे में उनके पास अन्य हैं जहां मैं सिर्फ अस्पष्ट याद रखता हूं कि उन्हें परेशानी हो रही है। तो यह renameपैकेज नहीं है , और यह नोंगनु renameutilsपैकेज भी नहीं है।

इसे यहां से प्राप्त करें और जैसा उन्होंने उल्लेख किया है वैसा ही स्थापित करें : https://github.com/subogero/rename

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