如何复制文件并在其中添加数字?

如何复制文件并在其中添加数字?

这个问题让我很困惑——我实际上是想让 Thunar 自定义操作将选定的文件复制到同一目录中,并在扩展名前添加一个数字,例如

cp file.ext file_1.ext

一些命令似乎会自动执行此操作mogrify -format(除非扩展名明显发生变化)。

例如,我想复制一个图像文件,以便我可以mogrify -resize复制(它将被覆盖)。

答案1

在 bash 中执行此操作的常见方法是参数扩展。如果file变量保存文件名,请执行以下操作:

name=${file%.*}
extension=${file##*.}
i=1
new_file="${name}_${i}.${extension}

cp "$file" "$new_file"

要在脚本中使用它(duplicate.sh比如说),请执行以下操作:

#!/bin/bash

name=${1%.*}
extension=${1##*.}
infix="${2:-_1}"

cp -v "$1" "${name}${infix}.${extension}"

然后这样调用它:

duplicate.sh FILE INFIX

答案2

这只是@Thor 答案的一个稍微简短的版本:

name=${file%.*}
extension=${file##*.}

cp "$name"{,_1}."$extension"

相关内容