【发布时间】:2014-07-29 09:48:25
【问题描述】:
我是 awk 和基于 shell 编程的新手。我有一堆文件名file_0001.dat、file_0002.dat......file_1000.dat。我想更改文件名,例如 file_ 之后的数字与以前的文件名相比将是 4 的倍数。所以我想改变
file_0001.dat to file_0004.dat
file_0002.dat to file_0008.dat
等等。
任何人都可以建议一个简单的脚本来做到这一点。我尝试了以下但没有任何成功。
#!/bin/bash
a=$(echo $1 sed -e 's:file_::g' -e 's:.dat::g')
b=$(echo "${a}*4" | bc)
shuf file_${a}.dat > file_${b}.dat
【问题讨论】:
-
我可以帮助您为此编写一个 java 或 php 脚本。您必须先扫描文件夹并保留所有文件名,然后将它们映射到新名称,然后从最高开始到最低。好像你从最低点开始 - 会有冲突。例如,如果之前有 004,则不能将 001 重命名为 004。
-
@tgkprog - 看起来他想使用 awk/sed/bash(这是完成此任务的更好工具)。
-
你应该选择一个正确的答案,为什么?见faq