为了使用.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
我需要在他的位置上放置扩展点吗?
答案 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