Commande FIND et deplacement de fichiers
pcsystemd
Messages postés
702
Date d'inscription
Statut
Membre
Dernière intervention
-
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
pcsystemd Messages postés 702 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila je lance depuis un répertoire qui contient des sous répertoires la commande qui suit pour récupérer les fichiers portant un nom bien particuliers dans tous les sous dossiers .
Ce qui donne comme résultat :
Je souhaiterais via xarg ou autre pouvoir déplacer ses fichiers dans les répertoires correspondants sur un autre disque. si le répertoire existe déjà juste déplacer les fichiers et si le répertoire n'existe pas déplacer ou créer le répertoire et déplacer les fichiers dedans.
Merci pour l'aide
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Voila je lance depuis un répertoire qui contient des sous répertoires la commande qui suit pour récupérer les fichiers portant un nom bien particuliers dans tous les sous dossiers .
find . -type f -ctime +712 -name 'psql_*'
Ce qui donne comme résultat :
./648/psql_1_0.jpg
./648/psql_1_3.jpg
./648/psql_1_125.jpg
./2145/psql_1_455.jpg
./2145/psql_1_12835.jpg
./27/psql_1_0.jpg
./27/psql_1_123565.jpg
./27/psql_1_9.jpg
./27/psql_1_12.jpg
./102/psql_1_7.jpg
./102/psql_1_56423.jpg
etc..
Je souhaiterais via xarg ou autre pouvoir déplacer ses fichiers dans les répertoires correspondants sur un autre disque. si le répertoire existe déjà juste déplacer les fichiers et si le répertoire n'existe pas déplacer ou créer le répertoire et déplacer les fichiers dedans.
Merci pour l'aide
L'accès au savoir est la première liberté que chaque homme devrait avoir.
A voir également:
- Commande linux déplacer un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Invite de commande - Guide
- Déplacer colonne excel - Guide
4 réponses
Salut,
Pas besoin de xargs (mais ça marcherait oui), tu peux le faire comme ceci :
-exec permet d'exécuter une commande avec le paramètre {} qui est le résultat de ta recherche find
test avant bien sûr.
Veuillez appuyer sur une touche pour continuer la désinfection...
Pas besoin de xargs (mais ça marcherait oui), tu peux le faire comme ceci :
find . -type f -ctime +712 -name 'psql_*' -exec mv {} /tmp/ \;
-exec permet d'exécuter une commande avec le paramètre {} qui est le résultat de ta recherche find
test avant bien sûr.
Veuillez appuyer sur une touche pour continuer la désinfection...
Salut,
Donc après ça ils n'existeront plus côté source ?
pouvoir déplacer ses fichiers dans les répertoires correspondants sur un autre disque. si le répertoire existe déjà juste déplacer les fichiers et si le répertoire n'existe pas déplacer ou créer le répertoire et déplacer les fichiers dedans.Tu veux déplacer les fichiers (et leur répertoire), pas seulement les copier ?
Donc après ça ils n'existeront plus côté source ?
Merci a vous deux.
Oui je veux déplacer et que cote source ils n’existent plus. En effet nous commençons a avoir un problème de place sur le disque ou ils sont actuellement.
Donc si je résume la commande complete ce serait :
Oui je veux déplacer et que cote source ils n’existent plus. En effet nous commençons a avoir un problème de place sur le disque ou ils sont actuellement.
Donc si je résume la commande complete ce serait :
find . -type f -name '*.png' -ctime +712 --exec rsync -avR --remove-source-files {} ../rep2/ \;
Attention toutefois !!!
Extrait du
Extrait du
man rsync:
Note that you should only use this option on source files that are quiescent. If you are using this to move files that show up in a particular directory over to another host, make sure that the finished files get renamed into the source directory, not directly written into it, so that rsync can’t possibly transfer a file that is not yet fully written. If you can’t first write the files into a different directory, you should use a naming idiom that lets rsync avoid transferring files that are not yet finished (e.g. name the file "foo.new" when it is written, rename it to "foo" when it is done, and then use the option --exclude='*.new' for the rsync transfer).
Je connais cette commande mais je ne suis pas certain que cela créait le répertoire si celui ci n'existe pas car il faut que les fichiers soient correctement déplacer dans son répertoire.
Par exemple :
./648/psql_1_0.jpg doit etre déplacer dans /path/648/psql_1_0.jpg donc si le répertoire n'existe pas dans /path/ il doit être créer.
c'est le paramètre --parents qui permet de copier avec l'arborescence complète.
Tu peux aussi faire un find pour construire un fichier tar.gz
et le détarer dans le répertoire voulu en gardant l'arborescence.
et après faire un find qui supprime tout.
L'avantage c'est que ça fait une sauvegarde en cas d'erreur.
Après c'est possible de lancer un find avec un sh -c pour lancer plusieurs commandes, mais je pense que la copie + suppression, c'est le plus simple, si tu as assez de place disque.
Peut-être que zipe aura une autre idée.
Puis j'ai jeté un oeil aux options de , d'où ma question ;-)
Un truc du style :
En plus, je crois que les includes de rsync prennent les wildcard, du coup, on doit pouvoir se passer de find ?
genre :
Non plus, car la date ( ) entre en ligne de compte ;-\