Debo eliminar 200 000 archivos (todos ellos) de una carpeta, y no quiero eliminar la carpeta en sí.
usando rm, aparece el error "Lista de argumentos demasiado larga". Intenté hacer algo con xargs, pero no soy un Shell Guy, por lo que no funciona:
find -name * | xargs rm -f
Respuestas:
fuente
-delete
. Esto también evita problemas con archivos que contienen comillas o caracteres de nueva línea (aunque podría usar-print0
las-0
opciones de GNU find y GNU xarg para solucionarlo).xargs
mientras tantofind
tiene-exec command {} +
sintaxis.Estás haciendo todo bien. Es el '*' que le da un problema (el shell lo está expandiendo en una lista de archivos en lugar de la
find
). La sintaxis correcta podría ser:(Este último es un poco menos eficiente ya que le pasará nombres más largos
xargs
, pero apenas notará :-))Alternativamente, puede escapar de su '*' de esta manera (sin embargo, en ese caso también intentará eliminar también "." Y ".."; no es un problema, solo recibirá una pequeña advertencia :-)):
Si sus nombres de archivo contienen espacios, use esto:
fuente
El siguiente comando eliminará todos los archivos del directorio actual :
fuente
-name '*'
no significa "todos los archivos". Los archivos se dicen con:-type f
puedes probar
o
fuente
Felicitaciones a quantas responden, aquí hay algunas adiciones.
Si desea eliminar archivos con un patrón de nombre en particular, puede escribirlo así. También se agregó -print para que pueda ver lo que sucede a medida que se eliminan los archivos.
Esto, por ejemplo, elimina todos los archivos JPEG en mydirectory.
fuente