将带有序列的文件重命名为新序列



我在一个目录中有文件,我需要用bash脚本重命名。下面是文件的旧名称和新文件名。

OLDNAME -> NEWNAME
FILE71 -> 001
FILE72 -> 002
fil73 -> 003
FILE74 -> 004
FILE75 -> 005
FILE76 -> 006
FILE77 -> 007
FILE78 -> 008
FILE79 -> 009
FILE80 -> 010

OLDNAME和NEWNAME应该和示例中一样精确,所以:

旧文件名FILE73必须改为新文件名003,FILE74必须改为004,FILE80必须改为010

提前感谢!

给你:

#!/bin/bash
mv FILE71 001
mv FILE72 002
mv FILE73 003
mv FILE74 004
mv FILE75 005
mv FILE76 006
mv FILE77 007
mv FILE78 008
mv FILE79 009
mv FILE80 010

这是@MarkSetchell脚本的另一个变体

#!/bin/bash
while read orig new
do
    echo mv "$orig" "$new"
done <<EOF
FILE71 001
FILE72 002
FILE73 003
FILE74 004
FILE75 005
FILE76 006
FILE77 007
FILE78 008
FILE79 009
FILE80 010
EOF

或者你可以试试

join -o"1.2 2.2" 
    <(find . -maxdepth 1 -name FILE* -print|cat -n) 
    <(seq -f "%03g" 1000|cat -n) |
    xargs -n2 echo

你需要用另一个命令替换echo -这取决于你…div;)

运行简单的for..loop和done

#!/bin/bash
files=$(find mypath -maxdepth 1 -type f | sort -u)
a=1
for i in $files; do
  new=$(printf "%03d" ${a}) 
  mv ${i} mypath/${new}
  let a=a+1
done

相关内容

  • 没有找到相关文章

最新更新