linux命令添加信息

有什么方法可以find驱动器中的所有.java文件,并用linux命令添加文本“author name:man”

最简单的是..

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

DC

解释一下上面的内容

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

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

-name告诉你发现你正在寻找一个跟在它-name的名字的文件,在这个例子中,我们告诉它搜索任何以.java结尾的文件,这就是为什么通配符*我们把单引号放在名字周围,如'*.java'以防止'壳牌扩张'谷歌的更多信息。

-exec告诉发现为每个文件执行后面的命令,在这种情况下,命令是echo "author name :man" >> {}这意味着echo(写)字符串“author name:man”并追加>> it到找到的文件。 find用文件的文件名替换标记{} ,它与当前文件夹相关,比如当你运行命令时你所在的文件夹。 \; 告诉找到这是命令的结尾。 进一步的命令可以跟随它,如果你想(你必须使用像-and逻辑操作)。

所以为了测试运行ssh到你的服务器并运行这个

  find / -name '*.java' 

这将以.java扩展名查找服务器上的所有文件。 可能会很多,可能需要很长时间。

当这样做,让我们尝试-exec一些东西,不会造成任何损害,所以试试这个命令

 find / -name '*.java' -exec ls -alh {} \; 

这告诉find为每个以.java结尾的文件运行ls命令。

你现在应该可以使用find来做你所需要的

cd到包含你想要修改的java文件的文件夹的根目录,然后运行命令。当然不要忘了追加纯文本到一个java文件将会破坏它。 确保文本是以评论的形式。

也许一个更好的命令是

 find ./ -name '*.java' -exec cat authors.txt >> {} \; 

authors.txt包含你想要添加的数据。 上面的命令会将authors.text的全部内容附加到它找到的每个.java文件。

要小心这个命令是非常强大的,“有力量来”是…或者其他

换句话说,确保在运行一个批量修改的命令之前先备份所有的东西。 你可能会后悔其他方面

DC

最后要预先把文件的细节更复杂一点,因为hhafez已经说过你可以使用另一个脚本来为你做。

创建脚本addauthor.sh …

  #!/bin/bash cat authors.txt > /tmp/tempfile cat $1 >> /tmp/tempfile cp --reply=yes /tmp/tempfile $1 

并修改find​​命令

 find ./ -name '*.java' -exec sh addauthor.sh {} \; 

先测试一下

DC

你是想以破坏性的方式来做,或者做一个副本,假设你不介意这样做

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} 

警告这是未经测试:)