2010-05-09 14 views
1

Je veux écrire un script qui:script Bash pour trouver un répertoire, la liste de son contenu et des sous-dossiers d'information

1- localiser le dossier « magasin » sur un système de fichiers * nix

2- move dans ce dossier

3- liste d'impression des contenus avec date de dernière modification

4- Calculer la taille des sous-dossiers

chemin absolu de ce dossier passe de serveur vers le serveur, mais le nom du dossier reste toujours le même.

Il existe un fichier de configuration qui contient le chemin d'accès correct à ce dossier, mais il ne lui donne pas le chemin absolu.

Exemple de configuration:


compte SUR

DIR-Store/hdd1

programmé OUI


Selon le fichier config le chemin absolu serait «/hdd1/backup/store/"

J'ai besoin du script pour grep le "/ hdd1" ou quoi que ce soit au-delà du mot "DIR-Store", ajouter "/ backup/store /", déplacer dans le dossier "store", imprimer la liste de son contenu et calculer la taille du sous-dossier.

Jusqu'à présent, je modifie manuellement le script sur chaque serveur pour refléter le chemin d'accès au dossier "stocker".

Voici un exemple de script:

#!/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! **********" 

Je sais que je pourrais utiliser grep

cat /etc/store.conf | grep DIR-Store 

Je ne sais pas comment se déplacer en sélectionnant le chemin, en ajoutant le «/sauvegarde/magasin/"et aller de l'avant.

Toute aide sera appréciée

Répondre

0

Vous pouvez utiliser cut pour extraire des colonnes à partir du fichier de configuration. Spécifiez un délimiteur de zone avec -d. Couper ne permet que des délimiteurs à caractère unique (comme par exemple un seul espace) et il existe certainement d'autres moyens de diviser la ligne. Puis ajoutez manuellement le sous-répertoire know à la racine.

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

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

@ honk Votre approche m'a donné: ligne 6: inattendu tout en regardant EOF pour faire correspondre '" » J'ai fatigué de remplacer l'espace entre guillemets en (-d "") avec un onglet, ne fonctionnait toujours pas Mais merci! – Lithiumion

+0

@Lithium: quota fixe manquant –

+0

@ honk Merci beaucoup. maintenant ça marche. N'a pas remarqué le quota manquant! Encore, j'ai dû supprimer le/backup de la ligne DIR = "$ {STORE}/backup/store" Sinon, il recherche le répertoire/backup/backup/store. Merci encore – Lithiumion

0

S'il n'y a pas d'espace sur cette ligne, sauf pour celle (s) entre « DIR-Store » et le répertoire:

dir=($(grep "DIR-Store" /etc/store.conf)) 
dir="${dir[1]}/backup/store" 
cd "$dir" # or pushd "$dir" 

ou cette clé sur la première barre oblique plutôt que d'un espace :

dir=$(grep "DIR-Store" /etc/store.conf) 
dir="/${dir#*/}/backup/store" 
cd "$dir" # or pushd "$dir" 
+0

@ Dennis Williamson Cela fonctionne! juste eu à modifier la ligne dir = "$ {dir [1]}/sauvegarde/magasin" pour être dir = "$ {dir [1]}/magasin" Ensuite, il excuted très bien . Merci beaucoup! – Lithiumion

Questions connexes