如何解决重命名从txt文件读取旧文件名和新文件名的文件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 -- "$1.fas" "$2.fas"' _
-
xargs -a renames.txt
:将renames.txt
的内容作为命令的参数进行处理。 -
-n 2
:一次选择2个参数。 -
sh -c
:命令是运行嵌入式Shell - 内联外壳
'echo mv -- "$1.fas" "$2.fas"'
:使用xargs提供的参数1和2执行实际的重命名。
# remove echo when output matches the intent
echo mv -- "$1.fas" "$2.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 -- "$1".fas "$2".fas"}' renames.txt
一旦对上面的awk的输出感到满意;保存到Shell脚本文件中,或直接通过管道传递到sh。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。