我的 Mac 上有一个包含 1,000 多个文件夹的目录。每个文件夹都是一个人的姓氏和名字,用逗号分隔。例如 - 史密斯,约翰。
我想用 shell 脚本重命名所有目录,这样 Smith, John 就变成 John Smith
这些目录将被摄取到 DAM 系统中,该系统将获取文件夹名称并将目录下的所有项目转换为关键字。就像现在的 Smith 一样,John 将使用“smith”和“John”作为单独的关键字来标记其下的每个文件。如果我可以将所有文件重命名为“名字姓氏”而不带逗号,则其下的所有文件都可以自动标记为该人的姓名作为 DAM 中的关键字。
感谢您的任何想法!
答案1
如果你有rename
Larry 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