我正在尝试寻找一种基于.txt文件中的前两列通过shell或perl脚本重命名Linux中的文件夹的方法:

文字档范例
重命名.txt

current_dir1     new_dir1
current_dir2     new_dir2
current_dir3     new_dir3
...
current_dir50    new_dir50


然后,shell / Perl脚本将根据列表中的内容创建另一个要运行所有mv命令的文件:

named_folders.sh或.pl

#!/bin/ksh

mv /home/pete1/current_dir1 /home/pete1/new_dir1

mv /home/pete1/current_dir2 /home/pete1/new_dir2

mv /home/pete1/current_dir3 /home/pete1/new_dir3
........
mv /home/pete1/current_dir2 /home/pete1/new_dir2

最佳答案

#!/usr/bin/env bash
folder_path="/home/pete1/"
while read -r oldname newname; do

     # remove echo if happy with result
     # if you remove echo it will rename
     echo mv "$folder_path/$oldname" "$folder_path/$newname";

done < rename.txt


如果将done < rename.txt设置为done < rename.txt >somefile.sh,它将写入所有echo结果的命令

08-16 03:04