1

我想编写一个脚本,它将:

1- 在 *nix 文件系统上找到文件夹“store”

2-移动到该文件夹

3- 打印最后修改日期的内容列表

4-计算子文件夹大小

此文件夹的绝对路径因服务器而异,但文件夹名称始终保持不变。

虽然有一个配置文件包含该文件夹的正确路径,但它没有给出它的绝对路径。

示例配置:


开户

目录存储 /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

我只是不知道如何绕过选择路径,添加“/backup/store/”并继续前进。

任何帮助将不胜感激

4

2 回答 2

0

您可以使用cut从配置文件中提取列。用 指定字段分隔符-d。Cut 只允许使用单个字符的分隔符(例如单个空格),当然还有无数其他方法可以分割行。

然后只需手动将 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 回答