請問怎麼更改「-」開頭的檔案名稱... - Linux

Table of Contents


hi,all

今天手殘在win下把一些檔案DSCN9954.jpg等等的檔名前面加上dash符號「-」後,

變成 -DSCN9954.jpg 後,用sftp傳到linux系統下後,麻煩就開始了XD

跑到linux下用文字操作一直找不到這個檔案, :(

系統沒有裝 emacs 所以一切純指令操作..

我試了一些指令都不行,像

mv *.jpg new_folder
mv \-*.jpg new_folder
ls *.jpg
ls *99*

用single quote單引號 ''來括住也不行

這些外部指令似乎會去parsing 檔名前面的 「-」 符號

會把檔名前的 -D 視為 option (如果是這樣,感覺有點危險)

除了用 echo 指令來列出檔名可以成功以外,目前還想不到方法

我用
echo -*
可以來列出檔名
接著我用 command substitution 來改名也宣告失敗

mv `echo -DSCN9954.*` 1.jpg

把echo結果輸出到文字檔後,也試過寫成shell script來改檔名也不行...

最後我只想到應該可用 emacs 或

很囧的一招方法..

sftp進localhost,再用sftp裡面的rename指令來改檔名(最後是成功了...)

請問有別的想法嗎??

thanks!!




--

All Comments

Puput avatarPuput2010-06-06
雙引號 "檔名"
Ethan avatarEthan2010-06-09
./-xxxx 亦可
Hazel avatarHazel2010-06-11
你可以用set -x看這些*代換後 指令會長怎樣 還蠻有趣的
Jack avatarJack2010-06-12
或是使用mv -- -xxxx 代表--之後的都不是option
George avatarGeorge2010-06-17
非常感謝h大和c大,不過我試了雙引號後也是不行耶
Blanche avatarBlanche2010-06-20
我的bash version是2.05b.0(1)
Kristin avatarKristin2010-06-21
find -inum xxx -exec mv {} ./oo \; 利用inode
Tom avatarTom2010-06-25
哦,原來可以用inode把找到後的./檔名丟給mv這招,非常感謝