如何重命名而不删除文件名的引号

时间:2018-07-30 10:12:09

标签: bash rename

为了使用.wav和.flac扩展名重命名音乐样本,我使用以下行:

for f in * ; do rename 's/[^a-zA-Z0-9:0:4]//g' "$f" ;done

但是发生的是,当文件名是这样的时候:

name * of ( the f?ile.wav 

它变成:

nameofthefilewav

它应该是:

nameofthefile.wav

我需要在他的位置上放置扩展点吗?

1 个答案:

答案 0 :(得分:-1)

您可以使用basename和参数扩展来获取文件名及其扩展名。

filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"

取自here

的答案

编辑:

bash-4.1$ ls
1.mp3  2.mp3  3.mp3
bash-4.1$ for f in `ls`; do
filename=$(basename -- "$f")
extension="${filename##*.}"
filename="${filename%.*}"
echo "FROM: $filename.$extension TO: $filename.wav"
done
FROM: 1.mp3 TO: 1.wav
FROM: 2.mp3 TO: 2.wav
FROM: 3.mp3 TO: 3.wav