看板 Linux 關於我們 聯絡資訊
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!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.233.74 ※ 編輯: HowLeeHi 來自: 59.112.233.74 (06/03 02:37)
hpo14:雙引號 "檔名" 06/03 02:50
ckclark:./-xxxx 亦可 06/03 02:56
ckclark:你可以用set -x看這些*代換後 指令會長怎樣 還蠻有趣的 06/03 03:00
ckclark:或是使用mv -- -xxxx 代表--之後的都不是option 06/03 03:02
HowLeeHi:非常感謝h大和c大,不過我試了雙引號後也是不行耶 06/03 11:07
HowLeeHi:我的bash version是2.05b.0(1) 06/03 11:08
imcar:find -inum xxx -exec mv {} ./oo \; 利用inode 06/03 12:20
HowLeeHi:哦,原來可以用inode把找到後的./檔名丟給mv這招,非常感謝 06/05 02:17