我编写了一些脚本foo
,该脚本接受文件路径,读取文件,对其进行一些更改,然后将更改后的文件输出到stdout:
foo src/file.foo > dest/file.changed.foo # works fine
cat src/file.foo | foo > dest/file.changed.foo # also works fine
现在,我想将此命令应用于目录中的多个文件,并对每个文件执行以下操作:
src / file.foo-> foo-> dest / file.changed.foo
find src -name '*.foo' \
-exec bash -c 'for x; do dest=${x/src/dest}; foo ${x} > ${dest/\.foo$/.changed.foo}; done' _ {} +
上面的方法有效,但是问题在于它对于日常使用来说太复杂了。没有更简单的方法吗?我想知道是否foo
是使事情变得复杂的方法。
#
,%
在这些扩展中,因为没有通配符,因此您要删除“最小”的部分。例如${sf#./src/}