2010-05-09 126 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

相关问题