J'ai la partie ci-dessous dans mon script bash:
for file in $(cat $csmtdirpath/$images_to_remove); do mv -v -f /$currentimages/*"$file"* $oldimages >> "$log_image_to_move" 2>> "$log_images_to_move_error"; done
Cette méthode utilise un caractère générique qui pose certains problèmes.
Donc, si j'ai 7AB.115.2 dans le fichier $ images_to_remove:
Et dans le répertoire où il se trouve a:
- 7AB.115.2.1diudniwqndiqnwd
- 7AB.115.2.2ewfnweofnowenfwef
- 7AB.115.2.3fewklfkwemfkpwemfpkmw
Il déplace également les 3 autres dossiers car 7AB.115.2 est une option valide basée sur le caractère générique "$ file" .
Comment puis-je m'assurer que le caractère générique utilise uniquement la première correspondance trouvée et s'arrête après?
Merci.
À votre santé,
find … -exec … -quit
ou si.Réponses:
Pour ne déplacer que le premier fichier trouvé, remplacez:
Avec:
break
provoque la fermeture de la boucle après le premier fichier.Nous avons également ajouté des guillemets autour des variables
currentimages
et duoldimages
shell pour empêcher le fractionnement des mots.la source