如何處理像“:”或“?”這樣的字元使文件名無效?
我只是試圖移動一個包含音樂文件的目錄,
thunar 4.10
它抱怨文件名無效。原來,一個文件名(歌曲標題)包含一個問號。我懷疑這是一個問題,刪除了問號並且確實可以復製文件。添加“?” 重新進入是不可能的。我也在命令行上嘗試過,
rename
但也沒有用。(不確定 thunar 在幕後使用了什麼,所以這個測試可能沒有實際意義)現在,如果問號使文件名無效,那麼首先如何創建該文件?
SoundJuicer
我使用新獲得的 CD創建了這些文件。我能夠在各種播放器中播放文件(名稱中帶有“?”)。這裡發生了什麼?我可以有“?” 名不副實?為什麼文件管理器無法處理此類文件,而其他應用程序似乎沒問題?
更新: 下一首歌曲中有一個“:”。與“?”相同的問題。
這些對 Unix 來說不是無效字元;通常只有 NUL 字元和 / 字元是無效的文件名(/ 是目錄分隔符)。
這也是我的直覺告訴我的,因為我在 Linux 中的文件名從來沒有遇到過任何問題,並且可以拋出幾乎所有合理的東西並且它工作正常。這就是這裡提出問題的原因。我以前從未遇到過無效的文件名。
您是否嘗試將文件移動到 U 盤?如果是這樣,那根棍子是格式化為 FAT32 還是原生 Linux 文件系統?
目標確實是我今天買的U盤。我打開
gparted
它,它被格式化為 FAT32。我不太確定,但那是 Windows 的事情,對吧?而且 Windows 有一堆它不支持的字元,顯然包括
?
and:
。我對嗎?
這些字元在 FAT32 文件系統
?
上:
無效,因此如果您需要復製文件,則需要重命名它們。在命令行中,您可以使用命令行工具
rename
(有時稱為prename
)將這些字元替換為_
甚至刪除它們:rename 's/[?<>\\:*|\"]/_/g' # Change invalid characters to _ rename 's/[?<>\\:*|\"]//g' # Remove invalid characters
我不熟悉
thunar
所以我不知道是否有辦法直接執行這個替換/替換操作。我剛剛發現Linux 複製到 fat32 文件系統:無效參數,建議將其添加到
pax
命令中(另一個複製文件的工具),以便您可以將完整文件名保留在本地磁碟上,但在復製到 USB 設備期間將文件名轉換:pax -rw -s '/[?<>\\:*|\"]/_/gp' *.mp3 /media/usb_device
如果完整的文件名對您來說真的很重要,我建議您重新格式化 USB 記憶棒以使用 Linux 原生文件系統,例如
ext4
. (如果有必要,有適用於文件系統系列的Windows驅動程序。)extN