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

问题描述 投票:1回答:2

我的目录中包含很多文件,它们的名称确实很长且具有重复性,我想从每个文件名中删除前16个字符。

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

0123456789012345file1.fits
0123456789012345file2.fits

对此:

file1.fits
file2.fits

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

rename file-rename
2个回答
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


0
投票

除了文件名的最后一个字符外,我将如何做?我在Mac上

© www.soinside.com 2019 - 2024. All rights reserved.