我有一个包含许多文件的目录,这些文件具有很长的重复名称,我希望从每个文件名中删除前16个字符。
所以我想重命名这样的文件:
0123456789012345file1.fits
0123456789012345file2.fits
到此:
file1.fits
file2.fits
我希望能够从终端的命令行执行此操作。
答案 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等参考。