ตกลงฉันมีไฟล์เป็นจำนวนมากเริ่มต้นด้วยเส้นประ -. อันไหนไม่ดี ... และฉันต้องการเปลี่ยนชื่อพวกเขา ในกรณีของฉันฉันต้องการใส่ตัวละครต่อหน้าพวกเขา
ฉันพบบรรทัดต่อไปนี้ที่ควรใช้งานได้ แต่เนื่องจากไม่มีการขีด:
for file in -N*.ext; do mv $file x$file; done
ถ้าฉันใส่ echo
อยู่ด้านหน้าของ mv
ฉันได้รับพวงของ
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
ซึ่งถูกต้องยกเว้นแน่นอนมันจะคิดชื่อไฟล์แรกคือตัวเลือก ดังนั้นเมื่อฉันลบ echo
และใช้มันฉันเพิ่งได้รับ
mv: illegal option -- N
ฉันได้ลองเปลี่ยนเป็น
for file in -N*.ext; do mv "$file" "x$file"; done
แต่คำพูดจะถูกละเว้นดูเหมือนว่า พยายามใช้เครื่องหมายคำพูดเดี่ยว แต่ตัวแปรไม่ได้ถูกขยาย ... ฉันจะทำอย่างไร
ปรับปรุง: ตอนนี้ฉันก็พยายามเสนอราคา อย่างนี้:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
และเมื่อฉันสะท้อนสิ่งนั้นมันดูถูกต้อง แต่เมื่อฉันเรียกใช้จริงๆฉันเพิ่งได้รับ
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
ฉันไม่มีเงื่อนงำวิธีการทำตอนนี้ ... ถอนหายใจ