我習慣在 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
向使用者推薦的方法當然是重新命名檔案。