我以前有一台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_sunset
,r_sunshine-new
将成为r_sunset-new
等。
答案 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
和-regextype
向find
提供完整的表达式。然后调用-exec mv {} +
(请注意+
符号)。