我有一些文件名如下:
abc21pqr.txt
abc22pqr.txt
abc23pqr.txt
依此类推
abc1000pqr.txt
我想取“abc”和“pqr”之间的数字,在该数字上加10并重命名文件:
所以我的输出文件名应该是:
abc31pqr.txt
abc32pqr.txt
abc33pqr.txt
依此类推
abc1010pqr.txt
如何使用Unix单线程执行此操作?
由于
答案 0 :(得分:2)
对于GNU Bash,假设数字前后的字符串是固定的,并且所有文件都在当前目录中:
find -maxdepth 1 -type f -name 'abc[0-9]*pqr.txt' |
sed 's|^./abc||; s|pqr\.txt$||' |
sort -nr |
while read src; do
mv abc${src}pqr.txt abc$((src+10))pqr.txt
done