在bash脚本中的文件扩展名之前追加字符串
我需要在bash脚本中的文件扩展名之前添加一个数字。例如,我想将像“在bash脚本中的文件扩展名之前追加字符串,bash,Bash,我需要在bash脚本中的文件扩展名之前添加一个数字。例如,我想将像“abc.efg”这样的文件名转换为“abc.001.efg。问题是我不知道文件的扩展名是什么(它是脚本的参数之一) 我在寻找最快的方法 提前感谢,您可以这样做: extension="${file##*.}" # get the extension filename="${file%.*}" # get the filename mv "$fil
abc.efg
”这样的文件名转换为“abc.001.efg
。问题是我不知道文件的扩展名是什么(它是脚本的参数之一)
我在寻找最快的方法
提前感谢,您可以这样做:
extension="${file##*.}" # get the extension
filename="${file%.*}" # get the filename
mv "$file" "${filename}001.${extension}" # rename file by moving it
您可以在的优秀答案中看到有关这些命令的更多信息
试验
让我们重命名这些文件:
$ for file in hello*; do ext="${file##*.}"; filename="${file%.*}"; mv "$file" "${filename}001.${ext}"; done
大昌
$ ls hello*
hello001.doc hello001.txt
您可以使用以上一个内衬构建mv
cmd
例如:
kent$ echo "abc.bar.blah.hello.foo"|sed 's/\.[^.]*$/.001&/'
abc.bar.blah.hello.001.foo
如果您的文件扩展名是在变量EXT中,而您的文件是在变量文件中,那么类似的方法应该可以工作
EXT=ext;FILE=file.ext;echo ${FILE/%$EXT/001.$EXT}
这张照片
file.001.ext
替换被锚定到字符串的末尾,因此扩展名是否出现在文件名中无关紧要。此处的更多信息+1这是正确的方法,唉,BASH不允许您将两个操作合并为一个。谢谢;)我们可以尝试稍微欺骗它,使其几乎成为一行,但我认为一步一步来做更清楚。
EXT=ext;FILE=file.ext;echo ${FILE/%$EXT/001.$EXT}
file.001.ext