Page 1 sur 2
Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 11:31
par Nerva
Bonjour.
Étant toujours aussi nul en bash, j'aurais besoin d'un coup de main pour automatiser une tâche simple.
J'ai un dossier
Images/Tri qui contient des photos dont certaines sont à supprimer. Ces photos à supprimer sont répertoriées dans un fichier texte
tri.txt (que je modifie selon besoin) placé dans ce dossier. J'utilise cette commande pour faire le ménage :
Ça fonctionne au poil mais ça m'oblige à ouvrir le terminal, me positionner dans le dossier et copier-coller la commande. Je voudrais donc faire ça en lançant simplement un script (et éventuellement avoir un retour indiquant quels fichiers ont été supprimés).
Merci.
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 12:17
par Scrat
Bonjour.
Tu colles ça dans un fichier exécutable (droits rwx) dont la première ligne est "#!/bin/bash", par exemple ceci :
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 12:37
par Nerva
J'ai oublié de le préciser mais ça j'avais essayé avant de poster ; aucun fichier n'est supprimé.
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 14:00
par falke
Salut, sinon tu as une rubrique spécifique aux scripts
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 14:23
par Scrat
Chez moi, ça marche. Contenu du fichier script "
efface" :
Code : Tout sélectionner
#!/bin/bash
cd /home/richard/TESTRM/truc
tr '\n' '\0' < tri.txt | xargs -0 rm
Exécution par double clic sur l'icône du script ou lancement en ligne de commande :
Les fichiers supprimés dans mon dossier truc sont bien ceux listés dans le fichier "tri.txt"
Mais
IL FAUT QUE CE SCRIPT AIT LES DROITS D'EXÉCUTION !
Pour cela :
ou clic droit sur le fichier script, propriétés, permissions, et cocher "
autoriser l'exécution du fichier comme un programme"
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 14:32
par falke
Et c'est bien aussi de mette une extension à ses scripts histoire de les distinguer clairement :
Mon_script.sh
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 14:36
par Scrat
@falke : exact ! (mais je suis un peu flemmard.
)
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 17:34
par Nerva
Bon ça fonctionne. J'avais oublié le /home/nerva dans le chemin.
Merci.
Re: Script automatisation suppression de fichiers
Posté : lun. 19 avr. 2021 18:39
par arghlub
Salut,
Sujet déplacé dans la nouvelle rubrique (ouverte) «Scripts /Développement».
Re: Script automatisation suppression de fichiers
Posté : jeu. 22 avr. 2021 18:27
par cyrille
Hello, je m'incruste même si résolu
perso, j'aurais utilisée une variable shell pour pouvoir le lancer depuis n'importe où et surtout vers n'importe quel dossier
Code : Tout sélectionner
#!/bin/bash
DOSSIER=$1
# Test si variable passée en paramètre
if [[ -z "$DOSSIER" ]]
then
echo "Le dossier de travail doit être passer en variable"
exit
fi
if [ -d "$DOSSIER" ]; then
### Dossier existe ###
echo "Il s'agit bien d'un dossier. OK."
else
### un paramètre est bien passé mais ce n'est pas un dossier ###
echo "Erreur : Merci de spécifier un dossier."
exit 1
fi
cd $DOSSIER
tr '\n' '\0' < tri.txt | xargs -0 rm
Et tu le lances ainsi
Code : Tout sélectionner
bash /chemin/vers/tonscript/script.sh /home/richard/TESTRM/truc
Ainsi tu peux changer le chemin du dossier sans modifier le script
Si tu ne veux pas de prendre la tête à ton saisir à chaque fois, tu crées un alias
Code : Tout sélectionner
alias tonNomAlias='bash /chemin/vers/script.sh paramètreDossier'
Et tant qu'on y est la bonne méthode recommandée en bash pour lire les lignes unes à unes d'un fichier
Code : Tout sélectionner
#!/bin/bash
input="/chemin/vers/fichier"
while IFS= read -r line
do
echo "$line"
done < "$input"