- Accueil
- » Forum
- » Terminal, scripts et ligne de commande
- » Script bash pour vérifier nommage fichier et mette condition
Pages : 1
Discussion fermée
#1 Le 17/08/2017, à 14:09
- Abder90
Script bash pour vérifier nommage fichier et mette condition
Le contenu de ce message ainsi que le titre ont été effacés par son auteur, franchement sympa pour les membres du forum qui ont pris la peine de lui répondre. Heureusement, c'était encore dans le cache…
Bonjour,
Je souhaite créer un script en bash qui permet de :
- vérifier qu'un fichier est bien nommé doit correspondre au format fichier_jj_mm_aaaa
- Vérifier dans le contenu qu'il y a bien une chaine de caractères définies (un mot en particulier)
si ces deux conditions sont réunies, ce fichier sera déplacé vers un un dossier
Possible d'avoir un exemple de script bash qui permet de le faire?
Merci d'avance,
Dernière modification par cqfd93 (Le 17/08/2017, à 23:14)
Hors ligne
#2 Le 17/08/2017, à 14:48
- kholo
Re : Script bash pour vérifier nommage fichier et mette condition
salut,
on commence par le début
lire tous les fichiers et les séparer
puis on test et on déplace
#!/bin/bash
# - vérifier qu'un fichier est bien nommé doit correspondre au format fichier_jj_mm_aaaa
# - Vérifier dans le contenu qu'il y a bien une chaine de caractères définies (un mot en particulier)
# si ces deux conditions sont réunies, ce fichier sera déplacé vers un un dossier
for file in *
do
echo -e "traitement de...\n$file"
[[ "$file" == fichier_jj_mm_aaaa* ]] && [[ "$file" == *un_mot_en_particulier* ]] && mv "$file" "/chemin/du/dossier"
done
reste à tester la date (fichier_jj_mm_aaaa) dans la première condition
Hors ligne
#3 Le 17/08/2017, à 16:22
- kholo
Re : Script bash pour vérifier nommage fichier et mette condition
il faut l'adapter...
source ici
voilà plus précis :
for file in *
do
DATE="${file##*fichier_}"
DATE="${DATE%_*}"
IFS='_'
JJ=${DATE[0]}
MM=${DATE[1]}
AAAA=${DATE[2]}
[[ "$file" == fichier_* ]] && [[ "$JJ" =~ ^[0-9]{2}$ ]] && [[ "$MM" =~ ^[0-9]{2}$ ]] && [[ "$AAAA" =~ ^[0-9]{4}$ ]] && date -d "$AAAA-$MM-$JJ">/dev/null 2>&1 && [[ "$file" == *un_mot_en_particulier* ]] && mv "$file" "/chemin/du/dossier"
done
la ligne à adapter :
[[ "$JJ" =~ ^[0-9]{2}$ ]] && [[ "$MM" =~ ^[0-9]{2}$ ]] && [[ "$AAAA" =~ ^[0-9]{4}$ ]] && date -d "$AAAA-$MM-$JJ">/dev/null 2>&1 && [[ "$file" == *un_mot_en_particulier* ]] && mv "$file" "/chemin/du/dossier"
je considère
que tes fichiers commencent par fichier_
puis une suite JJ_MM_AAAA (pas testé si c'est une date valide, ça pourrait être que des 0 ou autre chose)
puis que le nom contient "un_mot_en_particulier" (à adapter)
puis si tout est ok déplace le fichier vers "/chemin/du/dossier" (à adapter)
Dernière modification par kholo (Le 17/08/2017, à 16:44)
Hors ligne
#4 Le 17/08/2017, à 16:48
- Hizoka
Re : Script bash pour vérifier nommage fichier et mette condition
Salut,
si tu te mets dans le dossier à traiter :
for Fichier in *
do
# teste le nom du fichier
if [[ $(grep "_[0-9]{2}_[0-9]{2}_[0-9]{4}" <<< "${Fichier}") ]]
then
# recherche du mot
if [[ $(grep "TonMot" "${Fichier}") ]]
then
echo "Deplacement du fichier ${Fichier} vers Destination"
#mv "${Fichier}" Destination
else
echo "Le fichier ${Fichier} ne contient pas TonMot"
fi
else
echo "Le fichier ${Fichier} n'est pas nommé comme il faut."
fi
done
si ca te va tu vires le #.
il faut donc que tu remplaces TonMot et Destination par leur valeur.
Dernière modification par Hizoka (Le 17/08/2017, à 16:49)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 17/08/2017, à 16:50
- cqfd93
Re : Script bash pour vérifier nommage fichier et mette condition
Modération
Bonjour,
Merci de respecter les règles du forum : les doublons sont interdits.
Je fusionne les deux sujets.
− cqfd93 −
Hors ligne
#6 Le 17/08/2017, à 17:37
- Hizoka
Re : Script bash pour vérifier nommage fichier et mette condition
Je me disais aussi que j'avais raté un truc là XD
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 17/08/2017, à 20:19
- pingouinux
Re : Script bash pour vérifier nommage fichier et mette condition
Bonsoir,
if [[ $(grep "_[0-9]{2}_[0-9]{2}_[0-9]{4}" <<< "${Fichier}") ]]
Il faudrait soit utiliser egrep, soit backslasher les { et } :
if [[ $(egrep "_[0-9]{2}_[0-9]{2}_[0-9]{4}" <<< "${Fichier}") ]]
ou
if [[ $(grep "_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{4\}" <<< "${Fichier}") ]]
Tu peux même simplifier :
if egrep "_[0-9]{2}_[0-9]{2}_[0-9]{4}" <<< "${Fichier}"
then
........
Dernière modification par pingouinux (Le 17/08/2017, à 20:20)
Hors ligne
#8 Le 17/08/2017, à 20:33
- Abder90
Re : Script bash pour vérifier nommage fichier et mette condition
Je viens de retester ça marche! merci beaucoup
Hors ligne
#9 Le 17/08/2017, à 21:41
- Hizoka
Re : Script bash pour vérifier nommage fichier et mette condition
Oups, en effet, c'est egrep
j'ai réécrit trop rapidement.
je sais que ça peut être simplifié mais j'aime pas cette écriture
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 17/08/2017, à 23:30
- cqfd93
Re : Script bash pour vérifier nommage fichier et mette condition
Réponses également supprimées :
En #3 :
Merci pour la réponse rapide, j'ai tester le script malheureusement il ne fait rien, il ne déplace pas les fichiers
En #4 :
Identique au #1 (doublon)
En #9 :
Merci beaucoup de votre temps, je vais tester et ferai un retour, jai fais un premier essai des codes mais pour l'instant ça n'a pas fonctionner, je vais revoir mes ajouts/adaptations pour voir s'il n y a pas d'erreur
En #10 :
Re
Je viens de tester j'avoue ça ne veut pas marcher, il m'affiche comme quoi un fichier n est nommé comme l le faut mais aucun fichier n a été déplacé pourtant les fichiers sont bien présent dans le répertoire d''origine
Une idée?
En #11 :
ça me dit que tout les fichiers ne sont pas nommé comme il le faut alors qu'il y a un fichier qui est nommé comme il le faut, le problème ne se situe qu'à ce niveau la je pense
− cqfd93 −
Hors ligne
Pages : 1
Discussion fermée