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 13/07/2011, à 11:48

wrx

[Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Bonjour,

Je cherche une ou plusieurs lignes de commandes ou un script pour effectuer le déplacement de fichiers triés (par exemple par date) dans (un ou) plusieurs répertoires.

Affichage trié par date de modification :

$ l -tlu
total 20K
-rw-r--r-- 1 3 2011-07-13 09:22 fichier2.png
-rw-r--r-- 1 0 2011-07-13 09:22 fichier1.txt
-rw-r--r-- 1 0 2011-07-13 09:14 fichier7.pdf
drwxr-xr-x 2 4,0K 2011-07-13 09:08 copy_dir
-rw-r--r-- 1 0 2011-07-13 09:04 afichier6.txt
-rw-r--r-- 1 3 2011-07-13 09:01 fichier5.txt
-rw-r--r-- 1 3 2011-07-13 09:01 fichier4.txt
-rw-r--r-- 1 3 2011-07-13 09:01 fichier3.txt

donc, les fichiers sont

$ ls -tu
fichier2.txt  fichier1.txt  fichier7.txt  copy_dir  afichier6.txt  fichier5.txt  fichier4.txt  fichier3.txt

Question 1: Comment faire passer ces fichiers vers la commande mv?
Par exemple je prends 2 fichiers (OK) :

$ ls -tu | tail -n 2
fichier4.txt
fichier3.txt

et je les déplace (pas OK) :

$ ls -tu | tail -n 2 | cp copy_dir/
cp: opérande du fichier cible manquant après «copy_dir/»
Saisissez « cp --help » pour plus d'informations.

ou

$ ls -tu | tail -n 1 > cp copy_dir/
tail: impossible d'ouvrir «copy_dir/» en lecture: Aucun fichier ou dossier de ce type

qui me créé un fichier cp.
Bon là, ça ne marche pas, mais voilà l'idée.

D'ailleurs il ne faut pas déplacer les répertoires .
Question 2 : Est-il possible d'afficher les fichiers uniquement ?

Je n'ai pas trouvé article/forum traitant  cette idée.

Merci.

Dernière modification par wrx (Le 15/07/2011, à 12:15)

Hors ligne

#2 Le 13/07/2011, à 12:56

wrx

Re : [Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Pour afficher uniquement les fichiers on peut utiliser :

ls *.*

À condition que les fichiers contiennent dans leur nom une extension(ou plus précisement un point).

Je viens de découvrir la commande xargs, mais je n'ai pas réussi à trouver la commande exacte (si elle existe) :

$ ls *.* | xargs 
afichier6.txt fichier1.txt fichier2.txt fichier3.txt fichier4.txt fichier5.txt fichier7.txt

puis :

$ ls *.* | xargs mv repertoire1
mv: la cible «fichier7.txt» n'est pas un répertoire

xargs me semble traiter uniquement les fichiers du tube.

Hors ligne

#3 Le 15/07/2011, à 09:19

wrx

Re : [Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Au moins me dire si c'est trop simple ou trop compliqué . smile

Hors ligne

#4 Le 15/07/2011, à 10:44

Brunod

Re : [Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Salut
Fais une recherche dans ce forum sur répertoire magique tri automatique... Il y avait un truc à ce sujet que j'ai lu il y a pas mal de temps.
BD
EDIT : Ah, voila : http://forum.ubuntu-fr.org/viewtopic.php?id=144237
wink

Dernière modification par Brunod (Le 15/07/2011, à 10:45)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 15/07/2011, à 10:52

patoubuntu

Re : [Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Bonjour wrc,

je découvre ton message.

une solution peut-être pour réaliser ta commande :

wrc a écrit :

$ ls -tu | tail -n 2 | cp copy_dir/

=>  $ cp $( ls -tu | tail -n 2 ) copy_dir/

Le shell interprète en premier la commande entre parenthèse (On appelle ça la substitution de commande) et permet de mettre les fichiers désirés comme arguments à la commande cp.

Hors ligne

#6 Le 15/07/2011, à 12:14

wrx

Re : [Résolu]Déplacer/copier des fichiers triés vers plusieurs répertoires

Merci beaucoup à vous.

Brunod : je n'avais pas pensé au mot clef "magique" dans ma recherche smile .
Je devrais pouvoir adapter le code qui est ici à mes besoins (devoir maison). Ce n'est pas loin de ce que je veux faire. De plus c'est un script .

patoxubuntu : c'est exactement ce que je voulais faire en une commande. J'avais essayé
$ cp {ls -tu | tail -n 2} copy_dir/
sans connaître la syntaxe exacte à utiliser, qui n'a pas fonctionné bien évidemment.

Remerciement.
Pour moi, c'est [résolu].
Je laisse quand même la porte ouverte, au cas où.

Dernière modification par wrx (Le 15/07/2011, à 12:18)

Hors ligne