有没有办法找到驱动器中的所有.java文件,并使用linux命令添加文本“author name:man”...
答案 0 :(得分:2)
最简单的是..
find ./ -name '*.java' -exec echo "author name :man" >> {} \;
DC
解释上面的内容
第一个find
是命令。它的任务是找到符合某些标准的文件,并可选择做一些事情,它是一个非常强大的工具。
./
是要搜索的目录,在这种情况下./表示当前目录。如果您希望它搜索整个计算机,请使用/
如果您只想搜索特定文件夹或子文件夹,请使用/folder/subfolder
或cd
到该目录并使用./
如上面的示例命令
-name
告诉你发现你正在寻找一个名称跟随它的文件,在我们告诉它搜索任何以.java
结尾的文件的例子中,这就是为什么通配符{{1}我们在*
中围绕名称添加单引号以防止“Shell扩展”google以获取更多信息。
'*.java'
告诉我发现每个文件执行后面的命令,在这种情况下命令是-exec
,这意味着回显(写)字符串“author name:man”并追加{{1它到找到的文件。 find使用文件的文件名替换标记echo "author name :man" >> {}
,它相对于当前文件夹,例如运行命令时所在的那个。 >>
告诉我发现这是命令的结束。如果需要,可以使用其他命令(必须使用{}
之类的逻辑操作。)
因此,测试运行ssh到您的服务器并运行此
\;
这将找到服务器上扩展名为.java的所有文件。它可能很多,可能需要很长时间。
完成后,让我们尝试-and
最好不会造成任何损害的东西,所以试试这个命令
find / -name '*.java'
这告诉find为每个以.java结尾的文件运行ls命令。
您现在应该可以使用find来执行您需要的操作
cd到包含要修改的java文件的文件夹的根目录并运行该命令 当然不要忘记将纯文本附加到java文件会破坏它。确保文本采用评论的形式。
或许更好的命令是
-exec
其中authors.txt包含您要添加的数据。上面的命令会将authors.text的全部内容附加到它找到的每个.java文件中。
小心这个命令是非常强大的,并且“有很大的力量来”......某种或其他的
换句话说,确保在运行批量更改的命令之前首先备份所有内容。你可能会后悔其他明智的
DC
最后要预先知道文件的细节有点复杂,因为hhafez声明你可以使用另一个脚本为你做。
创建脚本addauthor.sh ...
find / -name '*.java' -exec ls -alh {} \;
并将find命令修改为
find ./ -name '*.java' -exec cat authors.txt >> {} \;
先测试
DC
答案 1 :(得分:1)
你想以破坏性的方式做这件事还是做一个副本,假设你不介意内联它
find . -name *.java -exec add_text.sh {}\;
其中add_text.sh
看起来像这样
#!/bin/sh
$input_file = $1
$header_file = /path/to/the/header/file/you/want/to/insert/
mv ${input_file} ${input_file}_tmp
cat $header_file ${input_file}_tmp > ${input_file}
警告这是未经测试的:)