问题描述
我有以下命名逻辑 .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)))