Résolu le 19-04-21 Script automatisation suppression de fichiers

Postez ici vos scripts Bash, Python, etc.
Avatar du membre
Nerva
Messages : 254
Enregistré le : lun. 4 mars 2019 18:48

Script automatisation suppression de fichiers

Message 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 :

Code : Tout sélectionner

tr '\n' '\0' < tri.txt | xargs -0 rm
Ç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.
Linux Mint 20.1 Ulyssa | Cinnamon 4.8.6

Avatar du membre
Scrat
Messages : 605
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: Script automatisation suppression de fichiers

Message par Scrat »

Bonjour.
Tu colles ça dans un fichier exécutable (droits rwx) dont la première ligne est "#!/bin/bash", par exemple ceci :

Code : Tout sélectionner

#!/bin/bash
cd ton_dossier
ta_commande
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-142-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
Nerva
Messages : 254
Enregistré le : lun. 4 mars 2019 18:48

Re: Script automatisation suppression de fichiers

Message par Nerva »

J'ai oublié de le préciser mais ça j'avais essayé avant de poster ; aucun fichier n'est supprimé.
Linux Mint 20.1 Ulyssa | Cinnamon 4.8.6

falke
Messages : 397
Enregistré le : mar. 3 oct. 2017 21:28

Re: Script automatisation suppression de fichiers

Message par falke »

Salut, sinon tu as une rubrique spécifique aux scripts
System:
Host: falke-MacBookAir Kernel: 5.4.0-70-generic x86_64 bits: 64
Desktop: Cinnamon 4.8.6 Distro: Linux Mint 20.1 Ulyssa
Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0

Avatar du membre
Scrat
Messages : 605
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: Script automatisation suppression de fichiers

Message 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 :

Code : Tout sélectionner

./efface
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 :

Code : Tout sélectionner

chmod +x efface
ou clic droit sur le fichier script, propriétés, permissions, et cocher "autoriser l'exécution du fichier comme un programme"
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-142-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

falke
Messages : 397
Enregistré le : mar. 3 oct. 2017 21:28

Re: Script automatisation suppression de fichiers

Message par falke »

Et c'est bien aussi de mette une extension à ses scripts histoire de les distinguer clairement :

Mon_script.sh
System:
Host: falke-MacBookAir Kernel: 5.4.0-70-generic x86_64 bits: 64
Desktop: Cinnamon 4.8.6 Distro: Linux Mint 20.1 Ulyssa
Machine:
Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0

Avatar du membre
Scrat
Messages : 605
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: Script automatisation suppression de fichiers

Message par Scrat »

@falke : exact ! (mais je suis un peu flemmard. :D )
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-142-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
Nerva
Messages : 254
Enregistré le : lun. 4 mars 2019 18:48

Re: Script automatisation suppression de fichiers

Message par Nerva »

Bon ça fonctionne. J'avais oublié le /home/nerva dans le chemin.

Merci.
Linux Mint 20.1 Ulyssa | Cinnamon 4.8.6

Avatar du membre
arghlub
Administrateur du site
Messages : 9469
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Script automatisation suppression de fichiers

Message par arghlub »

Salut,

Sujet déplacé dans la nouvelle rubrique (ouverte) «Scripts /Développement».
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 10 | MXlinux 19 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.1 | MXlinux 19.4 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 19 XFCE
─────( pour une informatique libre ! -membre de l' April.org )────────────────

Avatar du membre
cyrille
modérateur
Messages : 6759
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nord - Avesnois
Contact :

Re: Script automatisation suppression de fichiers

Message 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"
;)
# HOME: FreeBSD 12.1, Debian SID [XFCE, Fluxbox] # WORK : Mint 18.3 & 20 # VPS Debian stable + Serveur Olimex A20 autohébergé Debian stable
[ GIT : https://github.com/CyrilleBiot | Sites : https://cbiot.fr https://crust.ovh]

Répondre