Por el momento lo que hago es suyo:
Paso 1:
locate fooBar
/home/abc/fooBar
/home/abc/Music/fooBar
Paso 2:
Realice manualmente una eliminación, copiando y pegando cada línea.
rm /home/abc/fooBar
rm /home/abc/Music/fooBar
¿Cómo hago esto en un solo paso? Algo como
localizar fooBar> rm
Gracias.
command-line
pipe
theTuxRacer
fuente
fuente

rm -ilocalizar fooBar ''Respuestas:
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 delrm -fcomando y se ejecutará para cada línea producida porlocate foobar.El gotcha:
Pero, ¿qué sucede si hay espacios en su (s) línea (s) devueltos por localizar? Eso interrumpirá el
rm -fcomando 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
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.
fuente
-0(--null) para ubicar y xargs. Utiliza el carácter seguro ASCII NUL para separar los nombres de archivo:locate -0 foobar | xargs -0 rmQuizás necesite más opciones para usar
xargs. Pruébalo primero conxargs -p. Si está bien, elimine la-popción:fuente
Para eliminar todos los archivos que devuelve localizar, emita el siguiente comando en su terminal
locate foobar | xargs rm -ffuente