1

我有许多客户在他们的 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

但这根本行不通。

4

3 回答 3

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 "." {} \;
于 2012-10-02T11:06:34.087 回答
1

或者使用 find:

find /home -name "*/public_html/version.txt" -exec grep -H ""  {} \;
于 2012-10-02T11:06:41.137 回答
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
于 2012-10-02T11:00:05.820 回答