我想编写一个脚本:
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 /”并继续前进。
任何帮助将不胜感激
答案 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"