Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/08/2017, à 15: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 18/08/2017, à 00:14)

Hors ligne

#2 Le 17/08/2017, à 15: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, à 17: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, à 17:44)

Hors ligne

#4 Le 17/08/2017, à 17: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, à 17:49)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 17/08/2017, à 17: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, à 18: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, à 21:19

pingouinux

Re : Script bash pour vérifier nommage fichier et mette condition

Bonsoir,

Hizoka #6 a écrit :
  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, à 21:20)

Hors ligne

#8 Le 17/08/2017, à 21: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, à 22:41

Hizoka

Re : Script bash pour vérifier nommage fichier et mette condition

Oups, en effet, c'est egrep smile
j'ai réécrit trop rapidement.

je sais que ça peut être simplifié mais j'aime pas cette écriture tongue


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#10 Le 18/08/2017, à 00: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