使用文件名在文件中查找文本

时间:2012-10-02 10:58:19

标签: bash find

我有很多客户在其public_html目录中运行一个软件。该软件包含一个名为version.txt的文件,其中包含其软件的版本号(该号码,不包含其他内容)。

我想编写一个bash脚本,它将直接在每个用户的version.txt中查找名为/home/xxx/public_html/的文件,并输出文件的路径和文件的内容,即:

/home/matt/public_html/version.txt: 3.4.07
/home/john/public_html/version.txt: 3.4.01
/home/sam/public_html/version.txt: 3.4.03

到目前为止,我所尝试的是:

#!/bin/bash

for file in 'locate "public_html/version.txt"'
do
        echo "$file"
        cat $file
done

但这根本不起作用。

3 个答案:

答案 0 :(得分:1)

find /home -type f -path '*public_html/version.txt' -exec echo {} " " `cat {}` \;

可能适合你,但你可以不用echocat(“欺骗”grep):

find /home -type f -path '*public_html/version.txt' -exec grep -H "." {} \;

答案 1 :(得分:1)

或者使用find:

find /home -name "*/public_html/version.txt" -exec grep -H ""  {} \;

答案 2 :(得分:0)

for i in /home/*/public_html/version.txt; do
   echo $i
   cat $i
done

将找到所有相关文件(使用shell通配符),echo文件名输出和cat文件。

如果你想要更简洁的输出,你应该调查grep并用适当的正则表达式替换echo / cat,例如。

grep "[0-9]\.[0-9]" $i