Bonjour, je voudrai faire un script qui m’éfface des fichiers dans un répertoire si dans le meme dossier n’existe pas un fichier de meme nom mais avec une extention différente…
je ne sais programmer qu’en VB, je suis un peu perdu
quelqu’un peu m’aider ?
echo "Affiche les variables"
echo $nomfich
echo $nom
echo $extention
#arret si fichier du script
if [ #nomfich -eq $0 ]; then
exit 1
fi
echo “entre dans CASE”
Case select…
case $extention in
"dat")
# si fichier dat sans fichier png
echo “dat"
if test -s $nom”.png"; then
echo "ne fait rien"
else
echo “suppression du fichier"
rm nomfich
fi
;;
“png”)
# si fichier png sans fichier dat
echo “arret"
if test -s $nom”.dat”; then
echo "ne fait rien"
else
echo "suppression du fichier"
rm nomfich
fi
;;
*)
echo "erreur sur le fichier"
esac
exit
for fichier in $(ls ); do
# suppression de l’extension
base=${fichier%.}
# si les deux types existent, ne rien faire. Sinon supprimer.
if [ -f "$base.dat" ] && [ -f "$base.png" ]; then
echo "Ne pas supprimer $fichier"
else
echo "Supprimer $fichier"
fi
done
[/code]
A exécuter dans le répertoire cible. Sinon jouer avec les paramètres passés au scripts et $1.
echo "Affiche les variables"
echo $nomfich
echo $nom
echo $extention
#arret si fichier du script #if [ $nomfich -eq $0 ]; then #exit #fi
echo “entre dans CASE”
Case select…
case $extention in
"dat")
# si fichier dat sans fichier png
echo “dat"
if test -s “./”$nom”.png"; then
echo "ne fait rien"
else
echo "suppression du fichier “$nomfich #rm $nomfich
fi
;;
“png”)
# si fichier png sans fichier dat
echo “arret"
if test -s “./”$nom”.dat”; then
echo "ne fait rien"
else
echo "suppression du fichier "$nomfich #rm $nomfich
fi
;;
*)
echo "erreur sur le fichier "$nomfich
esac
exit
[/code]
Et? Encore un problème? A première vue ton script m’a l’air correct sur le plan logique et syntaxique. J’ai quelques doutes sur ton test -s. Pourquoi pas test -f?
echo "Affiche les variables"
echo $nomfich
echo $nom
echo $extention
#arret si fichier du script #if [ $nomfich -eq $0 ]; then #exit #fi
mkdir ~/orphelins
echo “entre dans CASE”
Case select…
case $extention in
"dat")
# si fichier dat sans fichier png
echo "dat"
if test -f “./$nom.png”; then
echo "ne fait rien"
else
echo "suppression du fichier "$nomfich
mv $nomfich ~/orphelins/
echo $nomfich >> ~/Desktop/suppression.txt
fi
;;
“png”)
# si fichier png sans fichier dat
echo "png"
if test -f “./$nom.dat”; then
echo "ne fait rien"
else
echo "suppression du fichier “$nomfich
mv $nomfich ~/orphelins/
echo $nomfich >> ~/Desktop/suppression.txt
fi
;;
*)
echo $nomfich” n’est pas un fichier dat ou png
esac
exit[/code]