如何在句点之间删除部分文件名?

时间:2015-07-16 16:43:37

标签: rename file-rename batch-rename

我想以这种格式重命名许多文件

abc.123.fits
abcd.1234.fits
efg.12.fits

这种格式

abc.fits
abcd.fits
efg.fits

我尝试了重命名功能,但由于我试图替换的部分在所有文件中都不一样,所以它不起作用。我正在使用Linux。

1 个答案:

答案 0 :(得分:0)

for f in *; do mv "$f" "${f%%.*}.${f##*.}"; done`

${f%%.*}删除第一个句点后的所有内容,包括句点。 ${f##*.}删除最后一个句点之前的所有内容,包括句点(即获取文件扩展名)。将这两者连接起来,在它们之间有一段时间,可以得到理想的结果。

如果您不想重命名当前目录中的所有文件,可以将*更改为限制性更强的模式,例如*.fits。如果任何文件名包含空格,则必须在mv的参数周围加引号。

bash中有许多其他变量替换表达式;有关详细信息,请参阅TLDP's Bash Parameter Substitution等参考。