Test fichier [Terminé]

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 :blush:
quelqu’un peu m’aider ?

je lance mon script comme ca

ls | xargs -t -i{} ./net.sh{}

[code]#!/bin/bash
nomfich=$1
nom=${nomfich%.}
extention=${nomfich##
.}

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

[/code]

comment on concatene 2 textes ??? ca me fait des erreurs avec & ou + !(

$nom".dat" où $nom.dat

maintenant il me dit
"line 41: syntax error: unexpected end of file" mais il n’y a rien a cette ligne

remplace

par

exit 1 fi

[quote]vohu@vohu-desktop:~/Desktop/test$ ls | xargs -t -i{} ./net.sh {}
./net.sh bx1.png
bx1.png
bx1
png
./net.sh: line 14: syntax error near unexpected token fi' ./net.sh: line 14:fi’
[/quote]

:s

if [ $nomfich = $0 ] ; then exit 1 fi

man test

Une alternative à ton script:

[code]#!/bin/bash

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.

rholala, ben c bien mieu :stuck_out_tongue:

si non j’en étais la… ca avance doucement

[code]#!/bin/bash
nomfich=$1
nom=${nomfich%.}
extention=${nomfich##
.}

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?

j’ai modifier, par -f, j’avais mis s, car j’avais vu que cela verifiait que mon fichier n’était pas vide… mais ca ne fonctionnait pas…

Merci beaucoup pour votre aide :slightly_smiling:

voila le script fini :slightly_smiling:

$ ls | xargs -t -i{} ./cleancache.sh {}

[code]#!/bin/bash
#cleancache.sh
nomfich=$1
nom=${nomfich%.}
extention=${nomfich##
.}

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]