Cómo usar el comando xargs en Linux

Para algunos de los usuarios más experimentados, siempre estamos buscando nuevas formas de trabajar de manera más inteligente y no más difícil en la terminal. xargs es un comando útil que actúa como puente entre dos comandos, leyendo el resultado de uno y ejecutando el otro con los elementos leídos. El comando se usa más […]

Característica Xargs

Para algunos de los usuarios más experimentados, siempre estamos buscando nuevas formas de trabajar de manera más inteligente y no más difícil en la terminal. xargs es un comando útil que actúa como puente entre dos comandos, leyendo el resultado de uno y ejecutando el otro con los elementos leídos. El comando se usa más comúnmente en escenarios cuando un usuario busca un patrón, elimina y cambia el nombre de archivos, y más. Aquí le mostramos cómo utilizar el xargs mando a tu favor.

¿Qué es xargs?

En su forma básica, xargs lee información de la entrada estándar (o STDIN) y ejecuta un comando una o más veces con los elementos leídos. Hay muchas demostraciones sencillas, pero aquí hay una que muestra lo que quiero decir.

Tener xargs ejecutar el ls comando en mi carpeta Documentos, ejecutaría el siguiente comando:

Documentos de Xargs Ls

El personaje de la pipa | está canalizando lo que venga antes de eso como STDIN para xargs.

Puedes ver eso xargs lee mi carpeta Documentos sin problemas. Este es solo un ejemplo de las capacidades del xargs mando.

Mientras que la xargs El comando se puede usar en varias operaciones de línea de comando, es muy útil cuando se usa con el find mando. En este artículo, analizamos algunos ejemplos útiles para comprender cómo xargs y find se pueden utilizar juntos.

Operaciones que involucran varios archivos

Suponga que desea copiar el contenido de «ref.txt» a todos los archivos de texto presentes en un directorio. Si bien la tarea puede requerir que ejecute varios comandos, el xargs comando, junto con el find comando, lo hace simple. Tengo un par de directorios de prueba. Uno tiene «test0.txt», que contiene texto, y el otro directorio tiene otros 10 archivos de prueba sin texto en ellos. Si quisiera tomar el contenido de test0.txt y copiar eso al resto de los archivos de texto en los otros directorios, ejecutaría el siguiente comando:

Xargs Find Cp

Para comprender el comando que se muestra arriba, dividámoslo en dos partes.

La primera parte es find ./test-dir1/ -name "*.txt" , que busca todos los archivos .txt presentes en el directorio «test-dir1». Puede especificar cualquier directorio aquí.

La segunda parte, xargs -n1 cp test.txt, tomará el resultado del primer comando (los nombres de archivo resultantes) y lo entregará al cp (copiar) comando uno por uno. Tenga en cuenta que el -n La opción es crucial aquí, ya que instruye xargs utilizar un argumento por ejecución.

Cuando se combinan, el comando completo copiará el contenido de «test0.txt» a todos los archivos .txt en el directorio.

Prueba de Xargs Cp

Operaciones que involucran una gran cantidad de argumentos

Una de las principales ventajas de usar xargs es su capacidad para manejar una gran cantidad de argumentos. Por ejemplo, al eliminar una gran cantidad de archivos de una sola vez, el rm el comando a veces fallaba con un «Lista de argumentos demasiado larga» error. Eso es porque simplemente no podía manejar una lista tan larga de argumentos. Este suele ser el caso cuando tiene demasiados archivos en la carpeta que desea eliminar.

Supongamos que tiene 75 archivos PDF y recibe un error al intentar eliminarlos.

Xargs Pdfs

Esto se puede solucionar fácilmente con xargs. Para eliminar todos estos archivos, use el siguiente comando:

Xargs Salón F

Operaciones que involucran la búsqueda de patrones

Los desarrolladores de software y los administradores de sistemas realizan muchas búsquedas de patrones mientras trabajan en la línea de comandos. Por ejemplo, un desarrollador puede querer echar un vistazo rápido a los archivos del proyecto que modifican una variable en particular, o un administrador del sistema puede querer ver los archivos que usan un parámetro de configuración del sistema en particular. En estos escenarios, xargs, junto con find y grep, te facilita las cosas.

Por ejemplo, para buscar todos los archivos «.txt» que contienen la cadena «maketecheasier», ejecute el siguiente comando:

Aquí está la salida que produjo el comando en mi sistema.

Xargs Grep Mte

Operaciones de corte / copia

Xargs, junto con find comando, también se puede utilizar para copiar o mover un conjunto de archivos de un directorio a otro. Por ejemplo, para mover todos los archivos de texto que tienen más de 10 minutos del directorio actual al directorio anterior, use el siguiente comando:

El -I La opción de línea de comando es utilizada por el xargs comando para definir una cadena de reemplazo que se reemplaza con nombres leídos de la salida del find mando. Aquí la cadena de reemplazo es {}, pero podría ser cualquier cosa. Por ejemplo, puede usar «archivo» como una cadena de reemplazo.

Cómo decirle a xargs cuándo dejar de fumar

Suponga que desea enumerar los detalles de todos los archivos .txt presentes en el directorio actual. Como ya se explicó, se puede hacer fácilmente usando el siguiente comando:

Pero hay un problema: el xargs comando ejecutará el ls comando incluso si el find El comando no encuentra ningún archivo .txt. Lo siguiente es un ejemplo.

Xargs Encuentra Txt Pngs

Entonces puede ver que no hay archivos .txt en el directorio, pero eso no se detuvo xargs de ejecutar el ls mando. Para cambiar este comportamiento, use el -r opción de línea de comando:

Conclusión

Aunque me he concentrado aquí en usar xargs con find, también se puede utilizar con muchos otros comandos. Si tiene varios comandos complejos que necesita ejecutar, xargs es una herramienta muy útil.

Si disfrutó de nuestro artículo sobre cómo usar el xargs en Linux, asegúrese de revisar algunos de nuestros otros contenidos de Linux, como nuestras guías para corregir el error «no queda espacio en el dispositivo» o acelerar Ubuntu.