Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中通过向文件名添加数字重命名文件_Bash_Rename_File Rename - Fatal编程技术网

在bash中通过向文件名添加数字重命名文件

在bash中通过向文件名添加数字重命名文件,bash,rename,file-rename,Bash,Rename,File Rename,我有很多这样的文件: 13831_1.jpg 13838_1.jpg 138035_1.jpg 138037_1.jpg 138039_1.jpg 我需要在文件名的数字上添加一个5000000的值。 结果应如下所示: 5013831_1.jpg 5013838_1.jpg 5138035_1.jpg 5138037_1.jpg 5138039_1.jpg 有没有一种方法可以用bash或perl实现这一点?do:rename-v。如果它将输出: Usage: rename [-v] [-n]

我有很多这样的文件:

13831_1.jpg
13838_1.jpg
138035_1.jpg
138037_1.jpg
138039_1.jpg
我需要在文件名的数字上添加一个5000000的值。 结果应如下所示:

5013831_1.jpg
5013838_1.jpg
5138035_1.jpg
5138037_1.jpg
5138039_1.jpg

有没有一种方法可以用bash或perl实现这一点?

do:
rename-v
。如果它将输出:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]
这项检查是因为至少有两种不同的重命名工具,具有非常不同的功能。我的解决方案需要重命名来处理perlexpr

然后你可以:

rename 's/^(\d+)/5000000+$1/e' *.jpg

仅使用
bash

for file in *.jpg; do
  number=${file%_*}
  therest=${file#$number}
  mv "$file" "$((number+5000000))$therest"
done
注:

  • *.jpg
    将扩展到当前目录中的
    .jpg
    文件列表(参考:)
  • ${file%\u*}
    删除文件名中
    之后的所有内容并返回它。(参考号:)
  • ${file#$number}
    从文件名的开头删除变量
    number
    的内容并返回它。(参考号:)
  • $((number+5000000))
    计算内部的算术表达式并返回结果(ref:)

它是用什么语言编写的?这绝对不是bash。我想试试这个(因为它听起来很棒),但我似乎在cygwin中没有
rename
。你知道我能不能得到它吗?@SvendHansen,它实际上是一个。我在互联网上搜索过,cygwin似乎找不到它。安装包
util-linux
将给您一个
rename
命令,但它的工作原理更像
mv
,似乎不支持正则表达式(或者如果它不是那种格式)。有一些第三方/家庭编写的脚本提供了该功能,不过(像这样:)获取脚本-它在doubleDown注释中链接。
$filename      = "13831_1.jpg";
$org           = explode("_".$filename);
$addnumber     = 5000000+$org[0];
$string        = implode("_",$addnumber);