我正在尝试向目录中的所有 javascript 文件添加版本号,以便我们的用户不会缓存对文件的更改。
如何移动一个目录中多个目录中的所有 Javascript 文件?
使用示例文件结构:
js/
--home/
----main.js
--apps/
----main.js
--handlers.js
--ajax.js
Run Code Online (Sandbox Code Playgroud)
我想做一些事情,比如git mv -r js/*.js js/*.1.js将 a 附加.1到文件名。显然,git mv 没有递归标志,所以我想知道我的选择是什么来做类似的事情。
shopt -s globstar # Set the SHell OPTion globstar
for f in **/*.js; do
git mv "$f" "${f%.js}.$version.js"
done
Run Code Online (Sandbox Code Playgroud)
将所有内容移动到单个目录:
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
Run Code Online (Sandbox Code Playgroud)
您可以使用find,但它几乎相同,因此将其保存在需要 Bash 3 或 POSIX sh 可移植性的地方(例如 OS X)。
find . -iname '*.js' -exec sh -c 'for f; do
git mv "$f" "${f%.js}.$version.js"
done' _ {} +
Run Code Online (Sandbox Code Playgroud)