Estoy tratando de hacer algo como
ls -t | head -n 3 | xargs -I {} tar -cf t.tar {}
para archivar los 3 últimos archivos modificados, pero termina ejecutando el comando tar por separado para cada uno de los archivos y al final me queda un archivo tar que contiene el último de los 3 archivos (en el orden que sea). Sé que no estoy usando 'xargs' correctamente pero la búsqueda no ayudó; Encuentro ejemplos que tampoco funcionan. Incluso el comando más simple
ls | xargs -I {} tar -cf t.tar {}
termina con un archivo tar que contiene solo uno de los archivos en ese directorio.
-I
bandera, debe usar algo diferente a{}
la cadena de reemplazo. Por ejemplols -t | head -n 3 | xargs -I foo tar -cf t.tar foo
-I
implica-L 1
que efectivamente significa ejecutar el siguiente comando para cada 1 línea de entrada, razón por la cual está viendo los resultados que es.Según esta publicación , es mejor usar en
r
lugar dec
, en caso de quexargs
corte las entradas, produciendo un archivo tar que contenga solo el último fragmento. Entonces una mejor solución sería:fuente