我的目录中包含很多文件,它们的名称确实很长且具有重复性,我想从每个文件名中删除前16个字符。
所以我想这样重命名文件:
0123456789012345file1.fits
0123456789012345file2.fits
对此:
file1.fits
file2.fits
我希望能够从终端中的命令行执行此操作。
在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。
除了文件名的最后一个字符外,我将如何做?我在Mac上