gpt4 book ai didi

macos - 通过减去值来重命名文件名的末尾

转载 作者:行者123 更新时间:2023-12-01 10:44:38 25 4
gpt4 key购买 nike

我在 macOS 上的 ns_up/目录中有以下文件:

sqRatio_ist_LogSplineInterpPk_iz_260.dat
sqRatio_ist_LogSplineInterpPk_iz_261.dat
sqRatio_ist_LogSplineInterpPk_iz_262.dat
sqRatio_ist_LogSplineInterpPk_iz_263.dat
sqRatio_ist_LogSplineInterpPk_iz_264.dat
sqRatio_ist_LogSplineInterpPk_iz_265.dat
sqRatio_ist_LogSplineInterpPk_iz_266.dat
sqRatio_ist_LogSplineInterpPk_iz_267.dat
sqRatio_ist_LogSplineInterpPk_iz_268.dat
sqRatio_ist_LogSplineInterpPk_iz_269.dat
sqRatio_ist_LogSplineInterpPk_iz_270.dat
sqRatio_ist_LogSplineInterpPk_iz_271.dat
sqRatio_ist_LogSplineInterpPk_iz_272.dat
sqRatio_ist_LogSplineInterpPk_iz_273.dat
sqRatio_ist_LogSplineInterpPk_iz_274.dat
sqRatio_ist_LogSplineInterpPk_iz_275.dat
sqRatio_ist_LogSplineInterpPk_iz_276.dat
sqRatio_ist_LogSplineInterpPk_iz_277.dat
sqRatio_ist_LogSplineInterpPk_iz_278.dat
sqRatio_ist_LogSplineInterpPk_iz_279.dat
sqRatio_ist_LogSplineInterpPk_iz_280.dat
sqRatio_ist_LogSplineInterpPk_iz_281.dat
sqRatio_ist_LogSplineInterpPk_iz_282.dat
sqRatio_ist_LogSplineInterpPk_iz_283.dat
sqRatio_ist_LogSplineInterpPk_iz_284.dat
sqRatio_ist_LogSplineInterpPk_iz_285.dat
sqRatio_ist_LogSplineInterpPk_iz_286.dat
sqRatio_ist_LogSplineInterpPk_iz_287.dat
sqRatio_ist_LogSplineInterpPk_iz_288.dat
sqRatio_ist_LogSplineInterpPk_iz_289.dat
sqRatio_ist_LogSplineInterpPk_iz_290.dat
sqRatio_ist_LogSplineInterpPk_iz_291.dat
sqRatio_ist_LogSplineInterpPk_iz_292.dat
sqRatio_ist_LogSplineInterpPk_iz_293.dat
sqRatio_ist_LogSplineInterpPk_iz_294.dat
sqRatio_ist_LogSplineInterpPk_iz_295.dat
sqRatio_ist_LogSplineInterpPk_iz_296.dat
sqRatio_ist_LogSplineInterpPk_iz_297.dat
sqRatio_ist_LogSplineInterpPk_iz_298.dat
sqRatio_ist_LogSplineInterpPk_iz_299.dat

我想通过减去文件名末尾的值 200 来重命名每个文件,例如:

sqRatio_ist_LogSplineInterpPk_iz_299.dat = sqRatio_ist_LogSplineInterpPk_iz_99.dat

我尝试了以下操作:

for i in $(ls ns_up/); do
number=$(echo $i | gsed 's/\(.*\)_\(.*\).dat/\2/')
new_number=$((number-200))
echo $i | gsed 's/_\(.*\)\.dat/"\$new_number"\.dat/'
done

但不幸的是,这不起作用,我也不知道为什么。

有人有想法吗?

最佳答案

您可以使用 homebrew 安装 (Perl) rename:

brew install rename

然后尝试:

rename -n 's/(\d+)/$1 - 200/e' ns_up/*dat

-n 表示进行“试运行”,即说出它将做什么,但实际上不做任何事情。

单引号中的 Perl 表达式依次接收变量 $_ 中的每个文件名,并期望对其进行修改并在同一变量中返回新值。

替换表示“用该数字减去 200 替换它找到的任何一组相邻数字。”

e 表示评估替换的右侧。

这种方法还有一些额外的好处:

  • 您可以轻松进行试运行
  • 如果任何两个输入文件名产生相同的输出文件名,它不会破坏文件
  • 请参阅手册页了解更多优点

关于macos - 通过减去值来重命名文件名的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com