如何在MacOS中递归重命名文件夹和文件

时间:2014-01-18 02:40:58

标签: macos bash recursion rename

我以前有一台Debian机器,我记得使用类似的东西:

shopt -s globstar
rename 's/changethis/tothis/' **

但也许是因为我的bash版本(版本3.2.48(1))不是最新的我得到:

-bash: shopt: globstar: invalid shell option name
-bash: rename: command not found

在OS X中递归重命名文件和文件夹有什么不同的方法? (10.8.5)


我想将其中包含字符串sunshine的每个文件夹和文件重命名为sunset。所以文件: post_thumbnails_sunshine将成为post_thumbnails_sunsetr_sunshine-new将成为r_sunset-new等。

3 个答案:

答案 0 :(得分:14)

 find . -depth -name "*from_stuff*" -execdir sh -c 'mv {} $(echo {} | sed "s/from_stuff/to_stuff/")' \;

答案 1 :(得分:3)

这应该可以解决问题:

find . -name '*sunshine*' | while read f; do mv "$f" "${f//sunshine/sunset}"; done

*仅使用-type f专门重命名文件,对于目录使用-type d

答案 2 :(得分:0)

您可以在find命令中使用正则表达式,如注释中所述@mbratch。您可以使用-regex-iregex-regextypefind提供完整的表达式。然后调用-exec mv {} +(请注意+符号)。