用逗号分隔的人的姓氏和名字重命名(反向)unix目录

用逗号分隔的人的姓氏和名字重命名(反向)unix目录

我的 Mac 上有一个包含 1,000 多个文件夹的目录。每个文件夹都是一个人的姓氏和名字,用逗号分隔。例如 - 史密斯,约翰。

我想用 shell 脚本重命名所有目录,这样 Smith, John 就变成 John Smith

这些目录将被摄取到 DAM 系统中,该系统将获取文件夹名称并将目录下的所有项目转换为关键字。就像现在的 Smith 一样,John 将使用“smith”和“John”作为单独的关键字来标记其下的每个文件。如果我可以将所有文件重命名为“名字姓氏”而不带逗号,则其下的所有文件都可以自动标记为该人的姓名作为 DAM 中的关键字。

感谢您的任何想法!

答案1

如果你有renameLarry Wall 写的,那么你可以使用它。它是sed文件名的。请注意,某些系统有一个名为 的不同工具rename

rename -n -e 's/([^,]+), ([^,]+)/$2 $1/' «list_of_files»

替换«list_of_files»为,例如*。测试完成后,删除-n.

答案2

Perl 版本的rename实用程序可以做到这一点:

rename 's/(.+), (.+)/$2 $1/' *

笔记:在运行此命令之前对目录树进行备份。它应该可以工作,但您没有提供有关目录名称的太多详细信息。

答案3

$ find .  -type d -maxdepth 1 -exec basename "{}" \; | grep -v '^.$' | awk -F", " '{ print "mv \""$0"\" \"" $2, $1"\""  }' | tee rename.sh
mv "Doe, Jon" "Jon Doe"
mv "Smith, Bob" "Bob Smith"
mv "Roe, Jane" "Jane Roe"

然后,您可以在给出一次chmod u+x rename.sh输出后运行它。tee

相关内容