Como los otros capítulos ya han mencionado, xargs es tu amigo. Es una herramienta realmente poderosa y trataré de explicarlo y proporcionar una solución para un problema común.
Lo que hace xargs es tomar una línea desde la entrada y agregarla a otro comando, ejecutando ese otro comando para cada línea en la entrada. Entonces, al escribir locate foobar | xargs rm -f
, la salida del comando de localización se aplicará al final del rm -f
comando y se ejecutará para cada línea producida por locate foobar
.
El gotcha:
Pero, ¿qué sucede si hay espacios en su (s) línea (s) devueltos por localizar? Eso interrumpirá el rm -f
comando porque los argumentos pasados a rm deben ser archivos (a menos que use el modificador -r), y una ruta de archivo debe escaparse o citarse si contiene espacios.
xargs proporciona el modificador -i, para sustituir la entrada en el comando que sigue en lugar de simplemente agregarlo. Entonces cambiaría la sugerencia a
locate foobar | xargs -ixxx rm -f 'xxx'
que ahora solo se romperá si los nombres de archivo devueltos por localizar contenían apóstrofes.
Tengo que estar de acuerdo con qbi, que debes tener cuidado al usar rm -f ! Use el indicador -p para xargs, o simplemente ejecute el foobar de localización por sí mismo antes de alimentarlo a xargs, o suelte el -f desde rm.
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
localizar fooBar ''