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 la salida de uno y ejecutando el otro con los elementos leídos. El comando se usa más comúnmente en escenarios cuando un usuario está buscando un patrón, eliminando y renombrando archivos, y más. Aquí te mostramos cómo usar el xargs manda 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 simples, 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:

echo "Documents" | xargs ls

Documentos Xargs Ls

El personaje de la pipa | canaliza todo lo que viene antes de eso como STDIN para xargs.

Puedes ver eso xargs lee mi carpeta Documentos sin ningún problema. Este es sólo un ejemplo de las capacidades del xargs dominio.

Mientras que la xargs El comando se puede usar en varias operaciones de línea de comandos, es muy útil cuando se usa con el find dominio. En este artículo, discutimos algunos ejemplos útiles para entender cómo xargs y find se pueden usar 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 mando, 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. 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:

find ./test-dir1/ -name "*.txt" | xargs -n1 cp test0.txt

Xargs Encuentra 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.txttomará la salida del primer comando (los nombres de archivo resultantes) y se la entregará al cp (copiar) comando uno por uno. Tenga en cuenta que el -n opción es crucial aquí, ya que instruye xargs para usar un argumento por ejecución.

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

Prueba Xargs Cp

Operaciones que involucran una gran cantidad de argumentos

Una de las principales ventajas de utilizar 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 error de «Lista de argumentos demasiado larga». Eso es porque no podía simplemente 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 arreglar fácilmente con xargs. Para eliminar todos estos archivos, use el siguiente comando:

find ./test-dir2/ -type f -name "*.pdf" -print | xargs rm -f

Xargs Rm F

Operaciones que involucran la búsqueda de patrones

Los desarrolladores de software, así como 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 de 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, xargsjunto con find y grepte facilita las cosas.

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

find ./ -name "*.txt" | xargs grep "maketecheasier"

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

Xargs Grep Mte

Operaciones de corte/copia

Xargsjunto 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 de antigüedad del directorio actual al directorio anterior, use el siguiente comando:

find . -name "*.txt" -mmin +10 | xargs -n1 -I '{}' mv '{}' ../

los -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 dominio. Aquí la cadena de reemplazo es {}, pero podría ser cualquier cosa. Por ejemplo, puede usar «archivo» como una cadena de reemplazo.

find . -name "*.txt" -mmin 10 | xargs -n1 -I 'file' mv 'file' ./practice

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:

find . -name "*.txt" | xargs ls -l

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 Buscar Txt Png

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

find . -name "*.txt" | xargs -r ls -l

Conclusión

Aunque me he concentrado aquí en usar xargs con find, también se puede usar 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 comando en Linux, asegúrese de consultar algunos de nuestros otros contenidos de Linux, como nuestras guías para corregir el error «no queda espacio en el dispositivo» o acelerar Ubuntu.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *