我尝试将版本号添加到目录中的所有javascript文件中,以便我们的用户不会对文件进行更改。
如何在一个目录中移动多个目录中的所有Javascript文件?
使用示例文件结构:
js/
--home/
----main.js
--apps/
----main.js
--handlers.js
--ajax.js
我想执行类似git mv -r js/*.js js/*.1.js
的操作,将.1
附加到文件名中。显然,git mv的递归没有标志,所以我想知道我的选择是做什么类似的。
答案 0 :(得分:4)
shopt -s globstar # Set the SHell OPTion globstar
for f in **/*.js; do
git mv "$f" "${f%.js}.$version.js"
done
将所有内容移至一个目录:
for source in **/*.js; do
dest="${source%.js}.$version.js"
dest="$destination/${dest##*/}" # Strip off leading directories and prepend actual destination
git mv "$source" "$dest"
done
您可以使用find
,但它几乎相同,因此请将此保存在您需要Bash 3或POSIX sh便携性的位置(例如,OS X)。
find . -iname '*.js' -exec sh -c 'for f; do
git mv "$f" "${f%.js}.$version.js"
done' _ {} +