我可以使用 sed 或等效工具来清理 vala 生成的文件吗?
can I use sed or an equivalent to cleanup vala generated files?
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 生成的文件?
将此附加到您的 sed 命令:
| xargs echo rm -v
如果一切正常,请删除 echo
。
Cyrus 建议使用 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 解决方案相同的问题。
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 生成的文件?
将此附加到您的 sed 命令:
| xargs echo rm -v
如果一切正常,请删除 echo
。
Cyrus 建议使用 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 解决方案相同的问题。