将Bash脚本转换为目录

将Bash脚本转换为目录,bash,unix,Bash,Unix,我有一个包含XML文件和其他目录的目录。所有其他目录都有XML文件和子目录等 我需要为bash编写一个脚本,可能每个目录都运行java XMLBeautifier目录,由于我在bash脚本编写方面的技能有点垃圾,我非常感谢您的帮助。如果您必须获取目录,您可以使用: $ find . -type d 只需通过以下方式将其传输到您的程序: $ find . -type d | xargs java XMLBeautifier $ find . -name "*.xml" | xargs java

我有一个包含XML文件和其他目录的目录。所有其他目录都有XML文件和子目录等


我需要为bash编写一个脚本,可能每个目录都运行java XMLBeautifier目录,由于我在bash脚本编写方面的技能有点垃圾,我非常感谢您的帮助。

如果您必须获取目录,您可以使用:

$ find . -type d
只需通过以下方式将其传输到您的程序:

$ find . -type d | xargs java XMLBeautifier
$ find . -name "*.xml" | xargs java XMLBeautifier
另一种方法是使用find和pipe将所有文件发送到您的程序,如下所示:

$ find . -type d | xargs java XMLBeautifier
$ find . -name "*.xml" | xargs java XMLBeautifier

这将从当前目录中获取所有.xml文件,并递归地遍历所有子目录。然后用xargs将它们一个接一个地交给java XMLBeautifier。

Find是一个很棒的工具。。。但是,如果您不确定文件名,但对这些xml文件包含的内容有模糊的概念,那么您可以使用grep

例如,如果您确实知道所有xml文件都包含一个短语正确的xml文件,则可以将该短语更改为您认为合适的短语,然后在命令行上运行以下命令

grep -IRw "correct xml file" /path/to/directory/*
-I选项搜索文件并在模式匹配时返回文件名 -R选项递归地到达您的目录 -w确保给定的模式整体匹配,而不是单个单词


希望这有帮助

奇怪的是,并不是所有的XML文件都有.XML扩展名,但是所有的文件都是XMLsI刚刚发布的。快告诉我:@Michael,好吧,你可以换任何适合你的。例如,如果所有文件都在目录结构下,那么只需查找-name*如果美化器只接受一个参数,例如目录名,则使用上面的第二种方法,但在xargs调用中添加-n1。