एक फ़ाइल का नाम नहीं बदल सकता है जिसका नाम एक हाइफ़न से शुरू होता है


34

मैं इसके नाम की शुरुआत में हाइफ़न के साथ एक फ़ाइल का नाम बदलने की कोशिश कर रहा हूं और यह दोनों:

mv -example-file-name example-file-name

और इस:

mv '-example-file-name' example-file-name

परिणाम होना:

mv: invalid option -- 'e'

1
या तो फ़ाइल के सापेक्ष पथ ((./tmp/-example), पूर्ण पथ (/ home / a / tmp / -example) का उपयोग करें या mv को बताएं कि आपने जो विकल्प दिया है - और वह इस प्रकार है फ़ाइल नाम।
урослав Рахматуллин

मामले में किसी को आश्चर्य होता है: mv *example-file-name example-file-nameएक ही समस्या है, क्योंकि फ़ाइल नाम विस्तार (AKA ग्लोबिंग) होने से पहले होता mvहै।
वॉल्टर ट्रॉस

जवाबों:


50

अधिकांश GNU / Linux कमांड्स --विकल्पों के अंत को इंगित करने के लिए एक विकल्प की अनुमति देते हैं ताकि बाद के -उपसर्ग वाले शब्दों को विकल्पों के रूप में नहीं माना जाए।

  mv -- -example-file-name example-file-name

एक छोटा सा परीक्षण

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$

यह renameभी के लिए एक ही समस्या को हल करता है। (कम से कम संस्करण जो काम करता है rename [options] <expression> <replacement> <file>..., जो भी एक है।)
अंडरस्कोर_ड

अरे, बीएसडी / मैक ओएस एक्स में mvयह नहीं है :(
श्रीधर सरनोबत

18

RedGrittyBrick का जवाब बहुत अच्छा है। एक अन्य विकल्प है:

mv ./-example-file-name example-file-name

एक छोटा परीक्षण:

$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example

बहुत अच्छा समाधान, यह मेरे लिए कभी नहीं हुआ। और स्वीकृत उत्तर के विपरीत, यह BSD / Mac OS X पर काम करेगा
श्रीधर सरनोबत

की तुलना में थोड़ा अधिक आकर्षक है --
कॉर्नि ऑक्ट

-1

आप इसका उपयोग कर सकते हैं:

rename -- "s/\-//g" *

कि यह सभी फ़ाइल का नाम बदल सकता है :) यदि आपकी फ़ाइल का नाम:

-ng--sh-ay-01[------------]-FLV

रन कोड के बाद, आपका फ़ाइल नाम बन जाता है:

ngshay01[]FLV

1
अन्य दृष्टिकोण (RedGrittyBrick, और gniourf_gniourf द्वारा एक) कई अन्य कमांड के साथ काम करने की अधिक संभावना है।
TOOGAM

-1

यह चाल हताशा के समय में मेरे लिए काम करती है। YMMV

rename \- '' *

आपको इसे पहचानने के लिए नाम बदलने के लिए हाइफ़न से बचना होगा। क्यों नाम बदलना एकल उद्धरण का सम्मान नहीं करता है या किसी प्रकार का ओवरराइड मेरे से परे है।

यह एकमात्र तरीका है जो मैंने देखा है कि नाम बदलने का उपयोग करते हुए मज़बूती से एक अग्रणी हाइफ़न को संभालता है। मैं mv का उपयोग करने पर अन्य पदों से सहमत हूं, लेकिन यदि आप किसी भी कारण से mv का उपयोग नहीं कर सकते हैं, तो यह काम करता है।

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