来自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文件。
稍微进一步我可以通过
将输出更改为.cfind . -name "*.vala" | sed -e 's/.vala/.c/'
现在我需要更进一步删除那些.c文件。
我想我可以将输出重定向到另一个文件,然后编写一个shell脚本来循环每一行并删除该文件。
有关更好方法的任何想法吗?有没有更好的方法来清理vala生成的文件?
答案 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解决方案相同的问题。