我需要查询文件夹中的所有 javascript 文件(“pre.js”除外)并在每个文件前面加上 pre.js 的内容
对单个文件来说似乎相当容易:
cat pre.js |cat - foo.js > /tmp/out && mv /tmp/out foo.js
但我在文件夹中有多个文件
我需要查询文件夹中的所有 javascript 文件(“pre.js”除外)并在每个文件前面加上 pre.js 的内容
对单个文件来说似乎相当容易:
cat pre.js |cat - foo.js > /tmp/out && mv /tmp/out foo.js
但我在文件夹中有多个文件
这需要一个简单的单行循环:
for f in foo.js bar.js baz.js; do cat pre.js $f > /tmp/out && mv /tmp/out $f; done
另一个答案的稍微更一般的形式:
for i in *.js ; do if [[ "${i}" != pre.js ]] ; then cat pre.js "${i}" > $$ ; mv $$ "${i}" ; fi ; done
ed
是标准编辑器:
shopt -s extglob nullglob
for f in !(pre).js; do ed -s "$f" << END
0r pre.js
w
q
END
done
这应该这样做:
find folder/ -name '*.js' \! -name 'pre.js' -exec sh -c 'cat pre.js "$1" > /tmp/out && mv /tmp/out "$1"' _ {} \;