Je voudrais faire quelque chose comme ça pour déplacer les deux derniers fichiers téléchargés:
mv ` ls -rt ~/Downloads/ | tail -2 ` .
Malheureusement, ls
ne donne que les noms de fichiers. Comment puis-je adapter le code ci-dessus?
(Avant que quelqu'un ne le signale, je suis conscient des problèmes de canalisation de la sortie de ls
. Je n'utiliserais cela que lorsque je connais les noms de fichiers en question.)
find
plutôt.Réponses:
D'accord, donc si vous n'abandonnez pas
ls
, essayez au moins de sortir de l'habitude d'utiliser des backticks pour tout, surtout quandxargs
c'est mieux:la source
xargs
me plaît plus que les backticks. Mais y a-t-il une raison technique de préférer cette séquence de pipes etxargs
plutôt que l'utilisation de backticks ou n'est-ce qu'une question de goût?ls
vousxargs -0
ls
est déconseillée: mywiki.wooledge.org/ParsingLsVous pouvez y utiliser GNU
find
:Les
find -printf
options:%Ts
pour afficher l'heure comme époque%p
le chemin du fichierVoir
man find | less +/'^ *-printf'
Éditer
si vous avez besoin de gérer les espaces dans les noms de fichiers, je recommande cette autre solution:
la source
find -printf
options-f2-
au lieu de-f2
comme optioncut
? À quoi sert le deuxième tiret?man cut
, il imprime jusqu'à la fin s'il y a plus d'un col.Utilisez
ls -rt ~/Downloads/*
au lieu dels -rt ~/Downloads/
. Dansls -rt ~/Downloads/*
l'argument, la chaîne est d'abord développée par le shell (cela s'appelle la globalisation du nom de fichier ). Vous obtenez donc une liste de chemins comme arguments pour lals -rt
commande, qui la trie ensuite de la manière que vous spécifiez par les options dels
. En revanche, la commandels -rt ~/Downloads/
lit le contenu du répertoire~/Downloads/
. Il s'agit d'une liste de fichiers sans le chemin du répertoire.la source
Avec zsh:
Les
(...)
pièces sont appelées qualificatifs globbing , l'une des caractéristiques les plus importantes dezsh
. Chaque qualificatif (généralement des caractères uniques) permet de filtrer les entrées correspondantes en fonction des attributs des fichiers (type, taille, heure ...), de modifier l'ordre dans lequel ils sont développés ou de modifier la façon dont ils sont développés.Ci-dessus, nous avons:
.
(point): sélectionnez uniquement les fichiers standard (pas les répertoires, les liens symboliques ...)om
: O rder la liste par m temps de odification.[1,2]
: sélectionnez uniquement les deux premières entrées.Notez également que la commande échouera s'il n'y a pas de correspondance (où d'autres shells pourraient accidentellement déplacer le mauvais fichier / dir).
la source