URL: https://linuxfr.org/forums/programmation-shell/posts/probleme-sur-enchainement-de-commandes-find-et-rsync Title: Problème sur enchainement de commandes find et rsync Authors: Sioncarf59 Date: 2022年11月08日T18:27:41+01:00 License: CC By-SA Tags: rsync, script_shell et find Score: 3 Bonjour à tous, je parcours régulièrement ce forum dans lequel je trouve souvent des réponses mais après avoir passé pas mal de temps sur un enchainement de commandes, je sèche... Pour info je ne suis ni programmeur ni informaticien, mais passionné d'informatique pour me faciliter la vie. J'ai des fichiers de sauvegardes horaires très nombreux et je souhaite récupérer assez facilement certaines versions de fichiers à certaines dates et les recopier à un autre endroit pour exploitation. La ligne de commande suivante me convient et fonctionne pour rechercher toutes les versions du fichier "7964.vce" dans mon répertoire de sauvegarde courant "/share/data2/D/" et "recopier" les versions de ce fichier avec arborescence conservée dans mon repertoire d'export "/share/data2_export/7964/". COMMANDE 1 [/share/data2/D/] /opt/bin/find . -name "7964.vce" -exec rsync -a -R {} /share/data2_export/7964/ \; Le soucis est que j'ai des milliers de répertoires quotidiens et cette commande prend du temps et je voudrais cibler ma recherche sur novembre 2022 par exemple avec la commande suivante qui fonctionne : COMMANDE 2 [/share/data2/D/] /opt/bin/find . -type d -name "22_11_*" -maxdepth 1 le résultat retourné est le suivant : ./22_11_01 ./22_11_07 ./22_11_03 ./22_11_02 ./22_11_04 ./22_11_08 La commande suivante me crée bien un fichier liste.txt dont le contenu est repris ci-après [/share/data2/D] # /opt/bin/find . -type d -name "22_11_*" -maxdepth 1 -exec /opt/bin/find {} -name "7964.vce"> liste.txt \; ./22_11_07/backup_22_11_07_17h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_07/backup_22_11_07_13h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_07/backup_22_11_07_12h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_03/backup_22_11_03_09h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_03/backup_22_11_03_10h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_02/backup_22_11_02_11h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_02/backup_22_11_02_15h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce ./22_11_04/backup_22_11_04_13h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce Ce sont bien ces 8 versions de fichiers de 7964.vce qui doivent être recopiées via rsync. Je voudrais faire la COMMANDE 1 mais uniquement sur les repertoires commençant par "22_11_*" extraits de la COMMANDE 2. J'ai essayé avec des pipes, des cat, des xargs, sans succès car je ne suis pas assez calé... Je voudrais donc que la commande 2+1 suivante fonctionne COMMANDE 1+2 [/share/data2/D] # /opt/bin/find . -type d -name "22_11_*" -maxdepth 1 -exec /opt/bin/find {} -name "7964*.vce" \; -exec rsync -a -R {} /share/data2_export/7964/ \; J'ai bien conscience que le problème vient du {} qui suit la commande rsync mais je n'arrive pas à lui faire relire le résultat de la 2ème commande find... Merci d'avance aux sachants pour qui le problème est surement basique mais pas pour moi !

AltStyle によって変換されたページ (->オリジナル) /