使用逻辑数学运算重命名 Bash

问题描述

我有以下命名逻辑 .JPEG 的文件(旧相机)。即,DSC01415.JPEG。

我的谜语是我想做这样的事情:

mv DSC{1415..4131}.JPEG DSC{0001..3517}.JPEG

对于任何文件都具有相同的效果

mv DSC<number>.JPEG DSC<number-less-1414>.JPEG

解决方法

请您尝试以下操作:

"devDependencies": {
    ....
    "multicast-dns": "^7.2.3",....
  },

如果输出看起来不错,请删除 for ((i = 1415; i <= 4131; i++)); do oldname=$(printf "DSC%04d.JPEG" "$i") newname=$(printf "DSC%04d.JPEG" "$((i - 1414))") if [[ -f $oldname && ! -f $newname ]]; then echo mv -- "$oldname" "$newname" fi done
请确保在执行前创建备份,以免意外丢失您的珍贵图片。

,

我结束了在 closh(clojure-shell)解决方案中的工作。好玩。而且,可能会用它做更多疯狂的事情。

#!/usr/bin/env closh-zero.jar
  
(defn split-reg [filename reg] 
  (str/split filename (re-pattern reg)))

  
;; ls |> (map #(split-reg % "teste")) |> (map second) |> \
;; (map #(split-reg % ".txt")) |> (map first) |> \
;; (map # (Integer/parseInt %))
  
(defn file-ids [file reg1 reg2]
  (->
   (split-reg file reg1)
   (second)
   ((fn [s] (split-reg s reg2)))
   (first)
   ((fn [s] (Integer/parseInt s)))))

(defn clj-rn [file reg1 arg reg2]
  (sh mv (identity file) (str/join [reg1 arg reg2])))
   

在closh shell中,定义这些函数后,

ls |> (map #(file-ids % "DSC" ".JPG")) |> (map #(- % 1414)) |> (map str) |> (map #(clj-rn %1 "foto" %2 ".jpg") 
(sh ls |> (identity)))

It worked!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...