Command-Line

處理帶有特殊首字元的文件名(例如♫)

  • August 14, 2019

我最近遇到了一個名稱以字元“♫”開頭的文件。我想複製這個文件,將它輸入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 無關的方法的注意。

引用自:https://unix.stackexchange.com/questions/159594