1

次のようなスクリプトを書きたいと思います。

1-*nixファイルシステム上のフォルダ「store」を見つけます

2-そのフォルダに移動します

3-最終変更日を含む目次を印刷します

4-サブフォルダのサイズを計算する

このフォルダの絶対パスはサーバーごとに異なりますが、フォルダ名は常に同じです。

そのフォルダへの正しいパスを含む設定ファイルがありますが、絶対パスを提供していません。

サンプル構成:


アカウントオン

DIR-ストア/hdd1

予定はい


設定ファイルによると、絶対パスは「/ hdd1 / backup /store/」になります。

「/hdd1」または「DIR-Store」という単語以外のものをgrepし、それに「/ backup / store /」を追加し、フォルダ「store」に移動し、その内容のリストを印刷して、サブを計算するスクリプトが必要です。 -フォルダのサイズ。

これまで、「ストア」フォルダーへのパスを反映するように、各サーバーでスクリプトを手動で編集していました。

サンプルスクリプトは次のとおりです。

    #!/bin/bash

echo " "

echo " "

echo "Moving Into Directory"

cd /hdd1/backup/store/

echo "Listing Directory Content"             

echo " "

ls -alh

echo "*******************************"

sleep 2

echo " "

echo "Calculating Backup Size"

echo " "

du -sh store/*

echo "**********   Done!   **********"

grepを使用できることはわかっています

cat /etc/store.conf | grep DIR-Store

パスを選択し、「/ backup / store/」を追加して先に進む方法がわかりません。

どんな助けでもありがたいです

4

2 に答える 2

0

cut構成ファイルから列を抽出するために使用できます。でフィールド区切り文字を指定します-d。カットでは、単一文字の区切り文字(たとえば、単一のスペースなど)のみが許可され、行を分割する方法は他にも数え切れないほどあります。

次に、knowサブディレクトリを手動で語幹に追加します。

STORE=$(grep DIR-Store /etc/store.conf | cut -d" " -f2)
DIR="${STORE}/backup/store"

pushd "${DIR}"
ls -alh
sleep 2
du -sh *
popd
于 2010-05-09T17:07:39.787 に答える
0

「DIR-Store」とディレクトリの間のスペースを除いて、その行にスペースがない場合:

dir=($(grep "DIR-Store" /etc/store.conf))
dir="${dir[1]}/backup/store"
cd "$dir"    # or pushd "$dir"

または、スペースではなく最初のスラッシュのこのキー:

dir=$(grep "DIR-Store" /etc/store.conf)
dir="/${dir#*/}/backup/store"
cd "$dir"    # or pushd "$dir"
于 2010-05-09T18:53:27.047 に答える