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を使用して実行します。

find /home -name "*/public_html/version.txt" -exec grep -H ""  {} \;
于 2012-10-02T11:06:41.137 に答える
1
find /home -type f -path '*public_html/version.txt' -exec echo {} " " `cat {}` \;

あなたのために働くかもしれませんが、あなたは(「トリック」grepなしechoで)行くことができます:cat

find /home -type f -path '*public_html/version.txt' -exec grep -H "." {} \;
于 2012-10-02T11:06:34.087 に答える
0
for i in /home/*/public_html/version.txt; do
   echo $i
   cat $i
done

関連するすべてのファイル(シェルワイルドカードを使用)、echoファイル名cat、ファイルを検索します。

より簡潔な出力が必要な場合は、grepを調べて、echo/catを適切な正規表現に置き換える必要があります。

grep "[0-9]\.[0-9]" $i
于 2012-10-02T11:00:05.820 に答える