使用Unix中txt文件中存在的名称重命名目录中的多个文件

时间:2018-10-29 19:11:14

标签: unix

我在目录中有一个文件,名称如下: Afs23 Afs28 Afs33 我想替换为: AFS23作为SB1 AFS28作为SB2 AFS33作为SB3 sb1,sb2和sb3存储在另一个txt文件中 在shell脚本中有什么可能的方法?

1 个答案:

答案 0 :(得分:0)

我添加了一个函数mv,因此您可以在真正移动东西之前测试此代码。
如果满意,请删除该功能。

# Test function
mv () {
   echo "Command: mv \"$1\" \"$2\""
}

# newnames.txt is a file with lines like sb1 and sb2
readarray -t a < newnames.txt
i=0

# Look for filenames starting with Af
for f in Af*; do
   mv "$f" "${a[i]}"
   (( i++ ))
   # Additional check: Do you have more Af* files than newnames?
   (( i == ${#a[@]} )) && { echo "Not enough new filenames"; break; }
done