linux命令用于添加信息

时间:2011-01-07 05:35:25

标签: linux command

有没有办法找到驱动器中的所有.java文件,并使用linux命令添加文本“author name:man”...

2 个答案:

答案 0 :(得分:2)

最简单的是..

find ./ -name '*.java' -exec echo "author name :man" >> {} \;

DC

解释上面的内容

第一个find是命令。它的任务是找到符合某些标准的文件,并可选择做一些事情,它是一个非常强大的工具。

./是要搜索的目录,在这种情况下./表示当前目录。如果您希望它搜索整个计算机,请使用/如果您只想搜索特定文件夹或子文件夹,请使用/folder/subfoldercd到该目录并使用./如上面的示例命令

-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}

警告这是未经测试的:)