Problème script shell sous ubuntu
velocity
Messages postés
251
Statut
Membre
-
velocity Messages postés 251 Statut Membre -
velocity Messages postés 251 Statut Membre -
Bonjour à tous,
J'ai par faute extrait le dossier de openssh dans le dossier /usr/src/bin en voulant l'installer et maintenant je veut supprimer les fichier qui ont été ajoutés alors j'ai ecrit un script pour supprimer les fichier avec la date de modification d'aujoud'hui mais j'ai des erreurs que j'ai pas pu résoudre .
Pourriez vous voir c quoi le problème ?
merci d'avance,
J'ai par faute extrait le dossier de openssh dans le dossier /usr/src/bin en voulant l'installer et maintenant je veut supprimer les fichier qui ont été ajoutés alors j'ai ecrit un script pour supprimer les fichier avec la date de modification d'aujoud'hui mais j'ai des erreurs que j'ai pas pu résoudre .
Pourriez vous voir c quoi le problème ?
merci d'avance,
#!/bin/sh
echo "enter day of modification: "
read day
for file in 'ls'
do
echo "check change date for: $file"
change_date = 'stat $file | grep -i change | cut -d ' ' -f 2'
change_day = 'stat $file | grep -i change | cut -d ' ' -f 2 | cut -d '-' -f 3'
if [ $change_day -eq $day ]
then
echo "delete file $file last changed on $change_date ? (Y/N)"
read c
if [ $c -eq 'y' || $c -eq 'Y' ]
then
rm $file
fi
fi
done
A voir également:
- Problème script shell sous ubuntu
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
2 réponses
salut,
stat permet d'obtenir les dates d'un fichier, pas besoin de grep cut.
Il ne doit pas y avoir d'espaces autour d'un signe égal qui effectue une assignation.
La prochaine fois, donne nous les messages d'erreur.
for elem in 'ls'C'est une mauvaise idée, parce que la boucle for va tourner sur chaque élément retourné par ls, si un nom de fichier a un espace, ça va pas aller.
stat permet d'obtenir les dates d'un fichier, pas besoin de grep cut.
Il ne doit pas y avoir d'espaces autour d'un signe égal qui effectue une assignation.
La prochaine fois, donne nous les messages d'erreur.
Essaye ça
Tu n'as qu'à l'adapter pour change_date.
et je te le dis encore for elem in 'ls', ça craint.
date -d"$(stat -c %y "$file")" +%A)au lieu de stat | grep | cut | cut.
Tu n'as qu'à l'adapter pour change_date.
et je te le dis encore for elem in 'ls', ça craint.
for f in * do echo "$f" done
vous avez raison pour les nom des fichier avec des espaces, mais j'ai déjà executé le script et ça a marché correctement par change qu'il n'y a pas d'espaces dans les noms .
Merci comme même pour l'information, j'ai cherché une méthode pareille avant d'ecrire le script mais je l'ai pas trouvé, La prochaine fois je m'en souviendrai .
Merci encore pour votrre aide .
Merci comme même pour l'information, j'ai cherché une méthode pareille avant d'ecrire le script mais je l'ai pas trouvé, La prochaine fois je m'en souviendrai .
Merci encore pour votrre aide .
#!/bin/sh echo "enter day of modification: " read day echo "creating backup file.." for file in 'ls' do echo "check change date for: $file" change_date='stat $file | grep -i change | cut -d ' ' -f 2' change_day='stat $file | grep -i change | cut -d ' ' -f 2 | cut -d '-' -f 3' if [ "$change_day" -eq "$day" ] then echo "delete file $file last changed on $change_date ? (Y/N)" read c if [ $c = "y" -o $c = "Y" ] then cp -R $file "backup/$file" if [ -f $file ] then rm $file elif [ -d $file] then rm -R $file fi fi fi done