我可以使用sed或等效的清理vala生成的文件吗?

时间:2016-02-13 10:19:54

标签: bash shell vala

来自this project维护者的发布tarball包含vala生成的c文件。

我正在寻找一种解决方案来查找.vala文件并删除等效的.c文件

例如

directory\file1.vala
directory\file1.c
directory\file3.c
directory\subdirectory\file2.vala
directory\subdirectory\file2.c
directory\subdirectory\file4.c

从上面我想删除file1.c和file2.c但不删除file3.c和file4.c

所以伸手可及的find我可以使用

find . -name "*.vala" -exec ls {} \;

这将列出所有vala文件。

稍微进一步我可以通过

将输出更改为.c
find . -name "*.vala" | sed -e 's/.vala/.c/'

现在我需要更进一步删除那些.c文件。

我想我可以将输出重定向到另一个文件,然后编写一个shell脚本来循环每一行并删除该文件。

有关更好方法的任何想法吗?有没有更好的方法来清理vala生成的文件?

2 个答案:

答案 0 :(得分:3)

将此附加到您的sed命令:

| xargs echo rm -v

如果一切正常,请删除echo

答案 1 :(得分:3)

赛勒斯'建议使用xargs可能更合适,但如果你的发现支持-exec ... +,你也可以使用:

find . -name "*.vala" -exec bash -c 'echo ${@/vala/c}' sh {} +
find . -name "*.vala" -exec bash -c 'rm ${@/vala/c}' sh {} +

(您可以使用\;以及+,但如果您有大量文件,额外的shell调用将会非常慢。)请注意,这相当于您的sed和遭受的损失来自与处理名称为avala.vala的文件的sed解决方案相同的问题。