如何删除目录中所有文件名的前16个字符?

时间:2015-07-16 15:11:38

标签: rename file-rename

我有一个包含许多文件的目录,这些文件具有很长的重复名称,我希望从每个文件名中删除前16个字符。

所以我想重命名这样的文件:

0123456789012345file1.fits
0123456789012345file2.fits

到此:

file1.fits
file2.fits

我希望能够从终端的命令行执行此操作。

1 个答案:

答案 0 :(得分:1)

在bash中,你可以运行

for f in *; do mv "$f" "${f:16}"; done

重命名剥离名称前16个字符的所有文件。

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

bash的${var:pos:len}语法还支持比上述更高级的用法。您只能使用${f::5}的前五个字符,或者使用${f:16:5}删除前16个字符后的前五个字符。 bash中提供了许多其他变量替换表达式;有关详细信息,请参阅TLDP's Bash Parameter Substitution等参考。

相关问题