我有一些文件:
tridiag_6_a.txt
tridiag_6_b.txt
tridiag_6_c.txt
gauss_6_a.txt
gauss_6_b.txt
我希望得到:
tridiag1.txt
tridiag2.txt
tridiag3.txt
gauss1.txt
gauss2.txt
我该怎么做? (Mac OS终端)我坚持:
$ rename 's/^(.+?)_.*/$1$N.txt/g' *.txt
但是这会通过所有重命名递增。
答案 0 :(得分:2)
使用Bash循环:
prev_prefix=""
count=1
for file in *.txt; do
[[ -f "$file" ]] || continue
prefix="${file/_*/}" # get all characters up to the first underscore
if [[ "$prev_previx" != "$prefix" ]]; then
count=1
prev_prefix="$prefix"
fi
mv "$file" "$prefix$count".txt
((count++))
done