星期一, 十二月 21, 2009

更改 / 複製 / 刪除 "-" 開頭的檔案名稱

檔案名稱是 -(dash) 開頭, 要如何 複製 / 刪除 / 改名? (砍 減字號 開頭的檔案)

範例

  1. echo 'xxx' > "-X-02.txt"
  2. ls
    -X-02.txt
  3. mv *02* 02.txt # 改名字
     mv: 不適用的選項 -- X
     請嘗試執行‘mv --help’來獲取更多資訊。
  4. mv -- *02* 02.txt # 解法, 使用 --, 更名完成

更改 / 複製 / 刪除 減號開頭的檔名

測試
  • echo 'xxx' > "-xx" # 產生一個 減號開頭的檔案
解法
  • 使用 --./ 即可解決此問題.
更名
  • mv -- -xx oo
  • mv ./-xx oo
複製
  • cp ./-xx oo
  • cp -- -xx oo
刪除
  • rm ./-xx
  • rm -- -xx

相關說明

下述轉載自: http://cha.homeip.net/blog/archives/lccnotes.txt

如何建立/刪除減號 ( - ) 開頭的檔案, 目錄:
1) mkdir -- -p (建立 -p 資料夾)
2) touch ./-a (建立 -a 檔案)
3) rmdir ./-p (刪除 -p 資料夾)
4) rm -f -- -a (刪除 -a 檔案)
ps. 若資料夾中含有 - 開頭的檔案, 則無法以 -rf 刪除, 必須先以上述方式
手動刪除 - 開頭檔案後, 才能以 -rf 強制全數刪除其他資料

相關標籤

this is comment icon johnpupu [回覆]

我也遇到這個問題過...
man page 其實有寫到

NOTES
The rm command uses getopt(3) to parse its arguments, which allows it to
accept the `--' option which will cause it to stop processing flag
options at that point. This will allow the removal of file names that
begin with a dash (`-'). For example:

rm -- -filename

The same behavior can be obtained by using an absolute or relative path
reference. For example:

rm /home/user/-filename
rm ./-filename

幫tsung 補完一下^^

Comment by johnpupu (12/22/2009 09:10)

this is comment icon 回 johnpupu [回覆]

感恩, 原來是 man rm 裡面有寫, 我是 man mv 裡面找不到. Orz..
rm -- 終止選項列表

Comment by Tsung (12/22/2009 10:43)
Add this page to del.icio.us

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~