【发布时间】:2021-06-23 12:12:30
【问题描述】:
我正在编写一个脚本,它将执行一些操作,其中一个操作是在文件名和目录名中查找所有出现的字符串,并将其替换为另一个字符串。
到目前为止我有这个
find . -name "*foo*" -type f -depth | while read file; do
newpath=${file//foo/bar}
mv "$file" "$newpath"
done
只要文件的路径不包含foo,它就可以正常工作,但这不能保证。
我觉得解决这个问题的方法是先只更改文件名,然后再返回并更改目录名,但即便如此,如果您的结构中有多个包含 foo 的目录它,它将无法正常工作。
有没有办法使用内置的 macOS 工具来做到这一点? (我说是内置的,因为这个脚本将分发给我们组织中的其他一些人,它不能依赖任何要安装的包)。
【问题讨论】:
-
您可以将路径名与文件名分开,然后进行替换,然后在重命名之前重新构建/连接它们?