将文件附加到其他文件的开头

时间:2013-11-05 21:56:09

标签: bash

我需要查询文件夹中的所有javascript文件(“pre.js”除外)并在每个文件前面加上pre.js的内容

单个文件似乎相当容易:

cat pre.js |cat - foo.js  > /tmp/out && mv /tmp/out foo.js

但我在文件夹

中有多个文件

4 个答案:

答案 0 :(得分:1)

这需要一个简单的单行循环:

for f in foo.js bar.js baz.js; do cat pre.js $f > /tmp/out && mv /tmp/out $f; done

答案 1 :(得分:1)

另一个答案的稍微更一般的形式:

for i in *.js ; do if [[ "${i}" != pre.js ]] ; then cat pre.js "${i}" > $$ ; mv $$ "${i}" ; fi ; done

答案 2 :(得分:1)

ed是标准编辑器:

shopt -s extglob nullglob

for f in !(pre).js; do ed -s "$f" << END
0r pre.js
w
q
END
done

答案 3 :(得分:0)

这应该做:

find folder/ -name '*.js' \! -name 'pre.js' -exec sh -c 'cat pre.js "$1" > /tmp/out && mv /tmp/out "$1"' _ {} \;