ls *.pdf 抱怨: ls: 無效選項 -- '_'

ls *.pdf 抱怨: ls: 無效選項 -- '_'

我習慣在 Linux Mint 中使用“ls”,例如“ls *.pdf”,但在這個 Debian 變體中使用“ls”.pdf' 抱怨道。我發現自己使用長度 'find -maxdepth 1 -type f -name ".pdf" -print' 代替。

讀這個:ls 工作很奇怪並沒有太大幫助。我確實有 bash_completions 包,並且在“~/.bashrc”檔案中沒有奇怪的“ls”別名 - 我從不編輯“/etc/profile”或全域別名,無論它在哪裡。

只是猜測,我確實應用了連結問題中的解決方案,但它不起作用。我不完全理解“完整” - 我想它是“readline”的一部分 - 所以也許一個簡短的解釋也會有所幫助(它沒有“手冊”頁面)。

但這是有效的:“complete -p ls *.pdf”,“complete --help”說,

 -p        print existing completion specifications in a reusable format

所以我想知道我是否應該永久應用這個“規則”?使用“-D”標誌...?

編輯

剛剛也注意到這個問題:

for f in *.pdf; do mv "$f" "BOOK - $F"; done

mv: invalid option -- 'R'

編輯2

我嘗試了上面的兩個命令,它們在我的作業系統分割區上運作良好。問題是,當我移動到另一個分割區(其中包含正在運行的 Linux Mint 和我想要修改的 pdf 檔案)時,這些命令會失敗。兩個分區都是 ext4,都有相同的使用者名稱、主機名稱、UID/GID、權限等。

答案1

似乎您的檔案名稱帶有前導破折號-,因此請使用:

for f in *.pdf; do mv -- "$f" "BOOK - $F"; done

man bash

A--表示選項結束並停用進一步的選項處理。 -- 之後的任何參數都被視為檔案名稱和參數。 - 的參數相當於 --。

答案2

如果您的檔案名稱以(減號或連字號)開頭-,許多程式會將它們解釋為選項。

您可以./在路徑前面添加以避免它:

ls ./*.pdf

許多程式還允許--在文件名參數之前插入以表示選項結束:

ls -- *.pdf

向使用者推薦的方法當然是重新命名檔案。

相關內容