Ok, saya punya banyak file dimulai dengan tanda hubung, -. Yang tidak begitu baik ... dan saya ingin mengubah nama mereka. Dalam kasus khusus saya, saya hanya ingin menempatkan karakter di depan mereka.
Saya menemukan baris berikut yang seharusnya berfungsi, tetapi karena gagal, baris ini tidak:
for file in -N*.ext; do mv $file x$file; done
Jika saya meletakkan echo
di depan mv
saya mendapat banyak
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
Yang benar, kecuali tentu saja akan berpikir nama file pertama adalah opsi. Jadi ketika saya menghapus echo
dan menjalankannya saya hanya mendapatkan banyak
mv: illegal option -- N
Saya sudah mencoba mengubahnya
for file in -N*.ext; do mv "$file" "x$file"; done
tapi kutipannya sepertinya diabaikan saja. Sudah mencoba menggunakan tanda kutip tunggal, tetapi variabelnya tidak diperluas ... Apa yang harus saya lakukan di sini?
Pembaruan: Saya sekarang juga telah mencoba mengutip penawaran. Seperti ini:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
Dan ketika saya menggemakannya, itu terlihat benar, tetapi ketika saya benar-benar menjalankannya saya baru saja mendapatkannya
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
Saya baru saja tidak tahu bagaimana melakukan ini sekarang ... sigh