[英]How to remove special characters in file names?
在創建播放列表時,我經常遇到會破壞播放過程的文件。 這將是帶有空格或撇號的文件。 我會用以下命令修復它
for file in *.; do mv "$file" `echo $file | tr " " '_'` ; done **(for spaces)**
現在我經常遇到帶有逗號,撇號,括號和其他字符的文件。 如何修改命令以刪除此類字符?
還嘗試rename 's/[^a-zA-Z0-9_-]//' *.mp4
但它似乎沒有刪除空格或逗號
如果你向它添加g
修飾符,你的rename
將起作用,這將執行所有替換而不是僅執行第一個替換:
$ echo "$file"
foo bar,spam.egg
$ rename -n 's/[^a-zA-Z0-9_-]//' "$file"
foo bar,spam.egg renamed as foobar,spam.egg
$ rename -n 's/[^a-zA-Z0-9_-]//g' "$file"
foo bar,spam.egg renamed as foobarspamegg
您可以通過參數擴展單獨使用bash
:
為了從文件名中刪除除a-zA-Z0-9_-
之外a-zA-Z0-9_-
所有內容,假設變量file
包含文件名,使用字符類[:alnum:]
匹配當前locale
中的所有字母字符和數字:
"${file//[^[:alnum:]_-]/}"
或明確地,將LC_COLLATE
更改為C
:
"${file//[^a-zA-Z0-9_-]/}"
例:
$ file='foo bar,spam.egg'
$ echo "${file//[^[:alnum:]_-]/}"
foobarspamegg
for file in *; do mv "$file" $(echo "$file" | sed -e 's/[^A-Za-z0-9._-]/_/g'); done &
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.