我想将特定目录下的所有文件重命名为数字后跟后缀。例如,我想将所有 *.jpg 文件重命名为 1.jpg、2.jpg、3.jpg、...
我考虑过使用find
它(类似于find ./*.jpg --exec mv {} <number_of_iteration>.jpg
),但我不知道我应该把什么放进去<number_of_iteration>
。
我可以用find
这个来做吗?或者有更好的方法吗?
答案1
您需要单独维护迭代。例如,使用move_count
包含以下内容的脚本:-
[ -w ~/MoveCount ] || echo 0 >~/MoveCount
read count <~/MoveCount
((++count))
echo $count >~/MoveCount
mv "$1" "$count.${1##*.}"
那么你的find
命令将变成:
find -iname "*.jpg" -exec bash -c "move_count {}" \;
请注意,之所以bash
显式调用,是因为默认设置sh
无法理解我使用的某些语法。或者,将#!/bin/bash
的第一行设为move_count
。