Me gustaría hacer algo como esto para mover los dos últimos archivos descargados:
mv ` ls -rt ~/Downloads/ | tail -2 ` .
Lamentablemente, ls
solo da los nombres de los archivos. ¿Cómo puedo adaptar el código anterior?
(Antes de que alguien lo señale, soy consciente de los problemas para canalizar la salida de ls
. Solo usaría esto cuando conozca los nombres de archivo en cuestión).
find
lugar.Respuestas:
De acuerdo, así que si no te rindes
ls
, al menos trata de dejar el hábito de usar backticks para todo, especialmente cuandoxargs
es mejor:fuente
xargs
me agrada más que los backticks. Pero, ¿hay alguna razón técnica para preferir esta secuencia de tuberías yxargs
sobre el uso de backticks o es solo una cuestión de gustos?ls
, puedes aprovecharxargs -0
ls
Se desaconseja el análisis : mywiki.wooledge.org/ParsingLsPuedes usar GNU
find
allí:Las
find -printf
opciones:%Ts
para mostrar el tiempo como época%p
la ruta del archivoVer
man find | less +/'^ *-printf'
editar
Si necesita tratar con espacios en los nombres de archivo, le recomiendo esta otra solución:
fuente
find -printf
adicionales sobre las opciones-f2-
lugar de-f2
como una opcióncut
? ¿Para qué es el segundo guión?man cut
, imprime hasta el final si hay más de una columna.Usar en
ls -rt ~/Downloads/*
lugar dels -rt ~/Downloads/
. Enls -rt ~/Downloads/*
el argumento, la cadena se expande primero por el shell (esto se denomina globbing de nombre de archivo ). Entonces obtienes una lista de rutas como argumentos para ells -rt
comando, que luego lo ordena de la manera que especifiques mediante las opciones dels
. Por el contrario, el comandols -rt ~/Downloads/
lee el contenido del directorio~/Downloads/
. Esta es una lista de archivos sin la ruta del directorio.fuente
Con zsh:
La
(...)
parte se llama calificadores de globbing , una de las características asesinas dezsh
. Cada calificador (generalmente caracteres únicos) permite filtrar las entradas coincidentes en función de los atributos de los archivos (tipo, tamaño, tiempo ...), alterar el orden en que se expanden o modificar cómo se expanden.Arriba, tenemos:
.
(punto): seleccione solo archivos normales (no directorios, enlaces simbólicos ...)om
: O rden la lista por m tiempo ODIFICACIÓN.[1,2]
: seleccione solo las dos primeras entradas.También tenga en cuenta que el comando fallará si no hay coincidencia (donde otros shells podrían mover accidentalmente el archivo / directorio incorrecto).
fuente