ไม่สามารถเปลี่ยนชื่อไฟล์ที่ชื่อขึ้นต้นด้วยยัติภังค์


37

ฉันพยายามที่จะเปลี่ยนชื่อไฟล์ด้วยเครื่องหมายยัติภังค์ที่จุดเริ่มต้นของชื่อและทั้งสองนี้:

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 globbing) เกิดขึ้นก่อนที่จะmvถูกเรียกว่า
Walter Tross

คำตอบ:


53

คำสั่ง 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>...ใดอย่างหนึ่งที่เป็น)
underscore_d

Damn, BSD / Mac OS X mvไม่มีสิ่งนี้ :(
Sridhar Sarnobat

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
Sridhar Sarnobat

--นั่นลวงมากกว่า
Corni

-1

คุณสามารถใช้สิ่งนี้:

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

มันสามารถเปลี่ยนชื่อไฟล์ทั้งหมด :) หากชื่อไฟล์ของคุณ:

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

หลังจากรันโค้ดแล้วชื่อไฟล์ของคุณจะกลายเป็น:

ngshay01[]FLV

1
วิธีการอื่น (โดย RedGrittyBrick และ gniourf_gniourf) มีแนวโน้มที่จะทำงานกับคำสั่งอื่น ๆ
TOOGAM

-1

เคล็ดลับนี้ใช้ได้กับฉันในเวลาที่สิ้นหวัง YMMV

rename \- '' *

คุณต้องหลบยัติภังค์เพื่อเปลี่ยนชื่อเพื่อรับรู้ เหตุใดการเปลี่ยนชื่อไม่เคารพคำพูดเดียวหรือเสนอให้แทนที่บางชนิดนั้นเกินฉัน

นี่เป็นวิธีเดียวที่ฉันเห็นว่าสามารถจัดการกับยัติภังค์ชั้นนำโดยใช้การเปลี่ยนชื่อ ฉันเห็นด้วยกับการโพสต์อื่น ๆ เกี่ยวกับการใช้ mv แต่ถ้าคุณไม่สามารถใช้ mv ด้วยเหตุผลใดก็ตามงานนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.