Solución 1:
Generalmente encuentro que usar el -exec opción para find ser más fácil y menos confuso. Prueba esto:
find . -name vmware-*.log -exec rm -i {} \;
Todo después de -exec se toma como un comando a ejecutar para cada resultado, hasta el ; , que se escapa aquí para que se pase a find . El {} se reemplaza con el nombre de archivo que find normalmente imprimiría.
Una vez que hayas verificado que hace lo que quieres, puedes eliminar el -i .
Solución 2:
Si tienes GNU find puedes usar el -delete opción:
find . -name "vmware-*.log" -delete
Para usar xargs y evita el problema de los espacios en los nombres de archivo:
find . -name vmware-*.log -print0 | xargs -0 rm
Sin embargo, sus archivos de registro no deben tener espacios en sus nombres. Es probable que los documentos de procesamiento de texto y los archivos MP3 los tengan, pero debería poder controlar los nombres de sus archivos de registro.
Solución 3:
Puedes decirle a find para delimitar la lista de salida con valores NULL y xargs para recibir su lista de entrada igual:
$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2
$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2
$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'
Además, asegúrese de escapar del * , ya sea con una barra invertida o conteniendo el vmware-*.log entre comillas simples, de lo contrario, su shell puede intentar expandirlo antes de pasarlo a find .
Solución 4:
No olvides el -delete del hallazgo opción. Elimina el archivo sin error con caracteres especiales...