2010-05-09 58 views
1

我想編寫一個腳本,將:bash腳本查找目錄,列出其內容和子文件夾信息

1-定位文件夾「存儲」在* nix文件系統

2-舉動到該文件夾​​與上次修改日期

4-計算的子文件夾大小

此文件夾的絕對路徑從改變內容

3-打印列表服務器到服務器,但文件夾名稱始終保持不變。

雖然存在一個包含該文件夾的正確路徑的配置文件,但它並未給出絕對路徑。

示例配置:


帳戶

DIR-店/ HDD1

計劃是


根據配置文件的絕對路徑將是「/ hdd1/backup/store /「

我需要腳本來grep「/ hdd1」或超出單詞「DIR-Store」的任何內容,向其中添加「/ 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 

我只是不知道如何繞過選擇的路徑,添加「/備份/存儲/「並繼續前進。

任何幫助將不勝感激

回答

0

您可以使用cut從配置文件中提取列。用-d指定一個字段分隔符。 Cut只允許使用單字符分隔符(例如單個空格),當然還有其他幾種分割線的方法。

然後只需手動追加知道子目錄到幹。

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

pushd "${DIR}" 
ls -alh 
sleep 2 
du -sh * 
popd 
+0

@嘟 你的做法給了我一個: 線6:意外的EOF而尋找匹配'「」 我累死取代(-d「」)中帶引號的空格之間的空格,仍然不起作用 但是謝謝! – Lithiumion 2010-05-10 00:35:41

+0

@Lithium:固定丟失配額 – 2010-05-10 01:06:15

+0

@ honk 非常感謝。現在它工作。沒有注意到缺少的配額! 不過,我不得不從行DIR =「$ {STORE}/backup/store」刪除/備份,否則它會查找/ backup/backup/store目錄。 再次感謝 – Lithiumion 2010-05-10 12:15:02

0

如果有該行沒有空格,除了「DIR-店」之間的一個(或多個)和目錄:

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" 
+0

@ Dennis Williamson This Works! 剛把編輯線 DIR = 「$ {DIR [1]} /備份/存儲」 是 DIR = 「$ {DIR [1]} /店」 然後excuted就好了。 謝謝! – Lithiumion 2010-05-10 00:32:55

相關問題