2010-05-09 3 views
1

Я хочу написать скрипт, который будет:Bash скрипт, чтобы найти каталог, список его содержимого и подпапок информация

1- местонахождение папки «магазин» на * Nix файловой системы

2- двигаться в эту папку

3 печать списка содержимого с указанием даты последней модификации

4- подсчет подпапки размера

абсолютный путь этой папки изменяется от сервер к серверу, но имя папки остается неизменным.

Существует файл конфигурации, который содержит правильный путь к этой папке, хотя он не дает абсолютного пути к нему.

Пример конфигурации:


счета ON

DIR-магазин/HDD1

Запланированные ДА


Согласно файле конфигурации абсолютный путь будет «/ hdd1/резервное копирование/хранение/"

Мне нужен сценарий для 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 

Я просто не знаю, как получить вокруг выбора пути, добавив «/ резервное копирование/магазине/"и двигаться вперед.

Любая помощь будет оценена

ответ

0

Вы можете использовать cut для извлечения столбцов из файла конфигурации. Укажите разделитель полей с помощью -d. Вырезать разрешает только односимвольные разделители (например, одно пространство), и, конечно же, есть и другие способы разделить линию.

Затем просто вручную добавьте справочник know к стеблю.

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

+0

@ Литий: исправлена ​​недостающая квота –

+0

@ honk Большое вам спасибо. теперь это работает. Не заметил недостающую квоту! Тем не менее, мне пришлось удалить/backup из строки DIR = "$ {STORE}/backup/store" В противном случае он ищет каталог в/backup/backup/store. Еще раз спасибо – Lithiumion

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

@ Dennis Williamson Это работает! Просто пришлось изменить строку реж = "$ {реж [1]}/резервного копирования/магазин" быть реж = "$ {реж [1]}/магазин" Тогда excuted просто отлично , Спасибо, тонна! – Lithiumion