嘗試 mv 檔案名稱中包含 -r 的檔案時出錯

嘗試 mv 檔案名稱中包含 -r 的檔案時出錯

這是我的問題:

我有一個名稱中帶有 -r 的檔案:-r.jpg

當我嘗試做時,mv *.jpg old/我得到:

mv: invalid option -- 'r'

即使是

for g in *.jpg;do echo $g &&mv "${g}" old/;done

我有同樣的錯誤。

答案1

大多數命令列實用程式都提供了分離選項論點

這可以防止許多問題“特別的”看起來像選項的檔案名稱。

最常見的分隔符號指示選項的結尾是兩個連字符----也支援mv

換句話說:

 mv [OPTIONS] -- SOURCE DEST

或因為您沒有指定任何選項:

 mv -- *.jpg old/

答案2

最簡單的解決方案是在檔案名稱前面添加./描述相對路徑

for g in *.jpg; do echo $g && mv "./${g}" old/; done

也可以使用絕對路徑

for g in $(pwd)/*.jpg; do echo $g && mv $g old/; done

或者,您可能想要使用該find命令,因為它已經提供了相對路徑(--max-depth如果您只想處理當前目錄,則可以使用 )

for g in $(find . -name "*jpg"); do mv $g old; done

在最壞的情況下,您有許多複雜的不可解析的字符,您可以參考索引節點號與find -inum並相應地處理您的文件

 $ for g in $(ls -i1 ./*jpg | cut -f1 -d' '); do find . -inum $g -print0 | xargs -0 -I '{}' mv '{}' old; done

相關內容