linux - 通过 bash 更改特定文件夹中的文件名

标签 linux bash filenames

我有一个文件夹 FOLDER1,其中包含不同的文件。

我的文件夹中有几个扩展名为 .png 的文件

我想使用 bash 脚本更改所有扩展名为 .png 的文件的文件名。我尝试写一篇,但仍然没有得到我想要的东西。

#!/bin/bash
# make sure you always put $f in double quotes to avoid any nasty surprises i.e. "$f"
i=0
for f in *.png
do
  echo "${i}Processing $f file..."
  i+=1;
  echo ${i}
  # rm "$f"
done

在脚本末尾,我希望所有文件的名称如下:

c-1.png

c-2.png

c-3.png

...

...

...

你能帮我吗? 谢谢

最佳答案

首先请注意:

i+=1

是字符串加法。你正在做的是 0,01,011,0111....你需要:

((++i))

接下来,您需要拆分文件名,一种方法是“.”。仅出现一次:

base=$(echo $f | cut -d. -f1)

最后移动:

mv $f ${base}-${i}.png

关于linux - 通过 bash 更改特定文件夹中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870841/

相关文章:

Linux shell 脚本 - 简单的 awk 脚本问题

bash - bash中如何处理以空格开头的文件名?

linux - 在 bash 中处理文本 - 从 pactl sink-inputs 输出中提取程序的体积

node.js - 使用 Electron Dialog 模块和 .showSaveDialog 时在另存为窗口中填充文件名

使用 'Filename' 在其他工作表中更新的 Excel 公式

c# - 使用通配符检查文件名搜索模式中的冲突

c++ - Linux Socket 文件描述符与线程

c++ - 从 popen 执行命令 shell 并设置其他命令 shell

json - CentOS监控磁盘使用情况使用 'du'输出JSON

linux - 拆分命令并将输出放入特定的模式文件