我一直在尝试使用 xargs 按正确的顺序重命名一堆文件,但无济于事。在挖掘成堆的类似问题时,我通过使用 sed 和 xargs 找到了答案。新手我想避免使用sed。我想一定有一些更简单的方法。
更具体地说,我有一些文件如下:
Abc.jpg
Def.jpg
Ghi.jpg
Jkl.jpg
Run Code Online (Sandbox Code Playgroud)
我希望它们以有序的方式重命名,例如:
Something1.jpg
Something2.jpg
Something3.jpg
Something4.jpg
Run Code Online (Sandbox Code Playgroud)
xargs命令可以seq实现这一目标吗?如果是这样,我该如何实施?
我不知道为什么有人会尝试参与sed其中。可能也不xargs是seq或者。这是一段纯 Bash 语句:
(x=1; for f in *.jpg; do mv "$f" "Something$((x++)).jpg"; done)
Run Code Online (Sandbox Code Playgroud)
其核心是对for要重命名的文件进行循环,mv对每个文件执行一个命令。要操作的文件通过单个 glob 表达式来表达,但您也可以单独命名它们、使用多个 glob 或使用多种其他技术之一。变量x用作简单的计数器,在进入循环之前初始化为1。 $((x++))扩展为 的当前值x,副作用是增加x1。整个内容被括在括号中以在子 shell 中运行它,因此其中不会影响主机 shell 环境。(在这种情况下,这意味着它不会x在调用 shell 中创建或修改任何变量。)
如果您将其放入脚本中而不是在命令行中输入,那么将其分成几行会更具可读性:
(
x=1
for f in *.jpg; do
mv "$f" "Something$((x++)).jpg"
done
)
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以这样输入。
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |