Command-Line
處理帶有特殊首字元的文件名(例如♫)
我最近遇到了一個名稱以字元“♫”開頭的文件。我想複製這個文件,將它輸入
ffmpeg
,並在終端中以各種其他方式引用它。我通常會自動完成奇怪的文件名,但這失敗了,因為我什至無法輸入第一個字母。我不想切換到滑鼠來執行複制粘貼操作。我不想為可能的場景記住一堆程式碼。我的臨時解決方案是切換到
vim
,粘貼!ls
和複製有問題的字元,然後退出並將其粘貼到終端中。這有效,但非常可怕。有沒有更簡單的方法來處理這種情況?
**注意:**如果它改變了東西,我正在使用fish shell。
如果文件名的第一個字元是可列印的,但既不是字母數字也不是空格,您可以使用
[[:punct:]]
glob 運算符:$ ls *.txt f1.txt f2.txt ♫abc.txt $ ls [[:punct:]]*.txt ♫abc.txt
我想到的最簡單的方法是
ls [^a-zA-Z0-9]*
,它對我有用,但 terdon 的答案更好地引起了對 extglob shell 選項甚至與 shell 無關的方法的注意。