如何删除目录中所有文件名的前16个字符?
How to remove first 16 characters of all file names in a directory?
我有一个包含许多文件的目录,这些文件的名称非常长且重复,我想从每个文件名中删除前 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 等参考资料。
我有一个包含许多文件的目录,这些文件的名称非常长且重复,我想从每个文件名中删除前 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 等参考资料。