我想以这种格式重命名许多文件
abc.123.fits
abcd.1234.fits
efg.12.fits
这种格式
abc.fits
abcd.fits
efg.fits
我尝试了重命名功能,但由于我试图替换的部分在所有文件中都不一样,所以它不起作用。我正在使用Linux。
答案 0 :(得分:0)
for f in *; do mv "$f" "${f%%.*}.${f##*.}"; done`
${f%%.*}
删除第一个句点后的所有内容,包括句点。 ${f##*.}
删除最后一个句点之前的所有内容,包括句点(即获取文件扩展名)。将这两者连接起来,在它们之间有一段时间,可以得到理想的结果。
如果您不想重命名当前目录中的所有文件,可以将*
更改为限制性更强的模式,例如*.fits
。如果任何文件名包含空格,则必须在mv
的参数周围加引号。
bash中有许多其他变量替换表达式;有关详细信息,请参阅TLDP's Bash Parameter Substitution等参考。