如何使用列表中的插入重命名多个文件

时间:2015-06-29 10:12:09

标签: bash unix

我有数百个编号的文件

file_001.txt

file_002.txt

file_003.txt
...

和单独文件中相同数量的字母

letters.txt:

abc

def

ghi
...

如何以这种方式重命名文件:

file_001_abc.txt
file_002_def.txt
file_003_ghi.txt

非常感谢!

3 个答案:

答案 0 :(得分:1)

我首先想到了indexpaste的组合。

awk

如果您没有可以替换paste files.txt letters.txt | awk '{split($1,file,"."); print file[1]"_"$2"."file[2]}' 的文件列表,例如files.txt,则这取决于您的具体设置。

答案 1 :(得分:0)

count=0
for i in `cat f1`;do
let count++
var=$(head -$count letters.txt | tail -1)
mv $i ${i%.txt}_$var.txt
done

希望这有帮助

由于

答案 2 :(得分:0)

我用xargs注释了这一行,所以你可以查看脚本 如果您喜欢,请删除评论。

start=0
while read next; do
   (( start = start + 1 ));
   printf "mv file_%03d.txt file_%03d_%s.txt\n" ${start} ${start} ${next}
   # printf "file_%03d.txt file_%03d_%s.txt" ${start} ${start} ${next} | xargs mv
done < letters.txt