檔案名稱是 -(dash) 開頭, 要如何 複製 / 刪除 / 改名? (砍 減字號 開頭的檔案)
範例
- echo 'xxx' > "-X-02.txt"
- ls
-X-02.txt
- mv *02* 02.txt # 改名字
mv: 不適用的選項 -- X
請嘗試執行‘mv --help’來獲取更多資訊。 - 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 強制全數刪除其他資料
我也遇到這個問題過...
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 補完一下^^
感恩, 原來是 man rm 裡面有寫, 我是 man mv 裡面找不到. Orz..
rm -- 終止選項列表