Bash脚本查找目录,列出其内容和子文件夹信息

时间:2010-05-09 16:41:14

标签: bash path find directory locate

我想编写一个脚本:

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

2-进入该文件夹

3-打印上次修改日期的内容列表

4-计算子文件夹大小

此文件夹的绝对路径从服务器更改为服务器,但文件夹名称始终保持不变。

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

示例配置:


帐户开启

DIR-Store / hdd1

预定是


根据配置文件,绝对路径为“/ hdd1 / backup / store /”

我需要脚本grep“/ hdd1”或“DIR-Store”之外的任何内容,添加“/ backup / store /”,移动到文件夹“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 /”并继续前进。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以使用cut从配置文件中提取列。使用-d指定字段分隔符。剪切仅允许单字符分隔符(例如单个空格),并且肯定有大量其他分割线的方法。

然后只需手动将知道子目录附加到词干。

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

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

答案 1 :(得分: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"