1

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

对单个文件来说似乎相当容易:

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

但我在文件夹中有多个文件

4

4 回答 4

1

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

for f in foo.js bar.js baz.js; do cat pre.js $f > /tmp/out && mv /tmp/out $f; done
于 2013-11-05T22:00:32.557 回答
1

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

for i in *.js ; do if [[ "${i}" != pre.js ]] ; then cat pre.js "${i}" > $$ ; mv $$ "${i}" ; fi ; done
于 2013-11-05T22:01:18.797 回答
1

ed是标准编辑器:

shopt -s extglob nullglob

for f in !(pre).js; do ed -s "$f" << END
0r pre.js
w
q
END
done
于 2013-11-05T22:06:18.897 回答
0

这应该这样做:

find folder/ -name '*.js' \! -name 'pre.js' -exec sh -c 'cat pre.js "$1" > /tmp/out && mv /tmp/out "$1"' _ {} \;
于 2013-11-05T22:04:51.653 回答