
Envoyé par
aerane
Merci de la réponse en effet, j'avais un doute sur une synthaxe ou quote d'où ma réouverture du sujet... Quand on est trop dedans on ne voie parfois pas l’erreur sautant pourtant aux yeux d'un autre .
Donc la version que tu m'as fournit avec le -exec fonctionne mais il ne me compresse qu'un fichier .txt alors que j'en ai plusieurs pour mon teste.
Oops! Je n'ai même pas "lu" la commande que j'ai recopiée (j'ai juste corrigé les quotes)! 
Attention! Le find exécute la partie "exec" pour CHACUN des fichiers trouvés, c'est-à-dire qu'il va créer un 1er .tar avec le 1er .txt puis écraser le même .tar avec le 2ème .txt etc. ce qui n'est probablement pas ce que tu veux.
Si aucun des fichiers ou sous-répertoires ne contient d'espace, tu devrais préférer:
find /home/irwin/Bureau -name '*.txt' -print | xargs tar -cjf /home/irwin/Documents/testeeee.tar.bz2
ou bien
tar -cjf /home/irwin/Documents/testeeee.tar.bz2 $(find /home/irwin/Bureau -name '*.txt' -print)
PS: j'ai ajouté l'extension .bz2 parce que tu utilises l'option -j
J'avoue que par la suite j'y insérerai un
-mtime 31 pour archiver les fichiers par mois.
J'ai voulu essayer en remplaçant le
-name par un
-type f mais je me retrouve encore avec le
find: paths must précède expression: *.txt pourtant renseigner tel que tu me l'a corrigé.
Plutôt qu'un long discours, c'est plus simple à faire (pour toi) et à lire (pour nous) de nous envoyer la commande que tu as utilisée et le message d'erreur correspondant.
Je soupçonne que tu as utilisé quelque chose comme:
find /home/irwin/Bureau -mtime -1 \! -type f '*.xls' -print # Pas bon
Dans mon message précédent, j'ai dit qu'il fallait JOINDRE les conditions, avec quelque chose comme -a ou -o, mais surtout, il faut des conditions. Or, dans -type f '*.xls', si -type f est bien une condition valide, le reste '*.xls' n'est PAS une condition. Sémantiquement parlant, il manque -name, ce qui fait que '*.xls' est considéré comme un path (et non une condition) et que "find" n'est pas content car il veut que les paths (comme /home/irwin/Bureau) soient AVANT les conditions, d'où le message d'erreur.
Voici un exemple de jonction OR de 2 conditions:
1 2 3 4 5
| $ find . -name 'to*' -o -name '*tu'
./tutu
./toto
./totu
./bibi2/tutu |
Soit, ici (sous réserve que ce soit la sémantique que tu souhaites):
find /home/irwin/Bureau -mtime -1 \! -type f -o -name '*.xls' -print
PS: par défaut, il y a une jointure AND implicite -a:
1 2 3 4 5
| $ find . -name 'to*' -name '*tu'
./totu
$ find . -name 'to*' -name '*to'
./toto |
Partager