重命名文件从 txt 文件中读取旧文件名和新文件名 (bash)

Rename files reading old file name and new file name from a txt file (bash)

我需要重命名目录中的一堆文件:

2016001.fas
2016002.fas
2016003.fas
...

正在阅读将实际文件名和新文件名选项卡分开的 .txt:

2016001 L.innocua001
2016002 L.innocua002
2016003 L.monocytogenes001
...

也许在 bash.

中使用单行循环或管道

请注意,如果需要,我还可以提供包含 .csv 或逗号分隔的 .txt 格式的实际文件名和新文件名的列表。感谢您提供的帮助。

xargs -a renames.txt -n 2 sh -c 'echo mv -- ".fas" ".fas"' _
  • xargs -a renames.txt: 处理 renames.txt 的内容作为命令的参数。
  • -n 2: 一次选择 2 个参数。
  • sh -c:命令是 运行 内联 shell
  • 内联 shell 'echo mv -- ".fas" ".fas"':使用 xargs 提供的参数 1 和 2 执行实际重命名。
# remove echo when output matches the intent
echo mv -- ".fas" ".fas"

仅使用 shell 读取 renames.txt 并执行重命名的方法:

while read -r a b; do
  # Remove echo if satisfied by the output
  echo mv -- "$a.fas" "$b.fas"
done <renames.txt

使用 awk 将 renames.txt 文件转换为 shell 脚本的替代方法,其中包含重命名命令:

awk '{print "mv -- "".fas "".fas"}' renames.txt

一旦满足上面awk的输出;保存到 shell 脚本文件,或直接通过管道传输到 sh.