Habrá ocasiones en las que tenga que construir una serie de comandos que son similares entre sí, pero no lo suficiente para permitirle utilizar sus opciones normales para sustituir un único comando. Por ejemplo, supongamos que desea eliminar todos los ficheros de un árbol de directorios con un nombre que termina en virgulilla (~), que es una convención de nomenclatura de ficheros que denota ficheros creados por determinados editores de texto. En un árbol de directorios grande, esta tarea puede ser abrumadora; el comando habitual para el borrado de ficheros rm
no proporciona ninguna opción para buscar y borrar todos los ficheros de un árbol de directorios que coincida con un criterio específico. Hay un comando que puede hacer parte del trabajo, llamado find
. Este comando muestra todos los ficheros que satisfacen el criterio proporcionado. Si pudiéramos combinar la salida de find
para crear una serie de líneas de comandos que utilicen rm
, habríamos solucionado el problema. Ésta es, precisamente, la finalidad del comando xargs
.
xargs
constituye un comando a partir de su entrada estándar. su sintaxis es:
xargs [opciones] [comando [argumentos-iniciales]]
El comando
es el comando que queremos ejecutar y argumentos-iniciales
es la lista de argumentos que se quiere pasar al comando. Las opciones son las de xargs
; no se le pasan al comando. Cuando ejecuta xargs
, éste ejecuta una vez el comando para cada palabra que se le pasa por la entrada estándar, añadiendo dicha palabra a la lista de argumentos del comando. Si desea pasarle varias opciones a éste, puede delimitarlas rodeando el grupo con comillas. Por ejemplo, supongamos que tenemos que borrar todos estos ficheros de copia de seguridad, denotados por el carácter de la virgulilla. Esto se puede hacer canalizando la salida de find
hacia xargs
, quien llama después a rm
:
$ find ./ -name "*~" | xargs rm
La primera parte de este comando (find ./ -name "*~"
) localiza todos los ficheros del directorio actual (./
) o de sus subdirectorios que tengan un nombre acabad en virgulilla (~
). Esta línea se le pasa después a xargs
, que añade cada uno a su propio comando rm
.
El acento grave (`
), que en la mayoría de los teclados se encuentra a la derecha de la letra P, es una herramienta similar a xargs
en muchos aspectos. El acento grave no es igual al carácter comilla simple ('
), que se suele encontrar a la derecha del 0 (cero).
El texto rodeado por los acentos graves se trata como un comando independiente cuyos resultados se sustituyen en la línea de comandos. Por ejemplo, para borrar estos ficheros de copia de seguridad, puede escribir lo siguiente:
$ rm 'find ./ -name "*~"