1

One of my friends wanted to have more logs in the /var/log/ directory, and after some time of using the system, he tried to access the folder and list it, but instead he got the following error:

bash: /bin/rm: Argument list too long

Does anyone know how many files can be added to this rm list?

cuonglm
  • 153,898

1 Answers1

6

The maximum length of the command line is set by the system and is sometimes 128KiB.

If you need to remove many, many files, you need to call rm more than once, using xargs:

find /var/log -type f -print0 | xargs -0 rm --

(Careful, this will find and delete all files in the subdirectories of /var/log etc. - if you do not want that use find /var/log/ -type f -maxdepth 1). The find lists the files, 0-delimited (not newline), and xargs -0 will accept exactly this input (to handle filenames with spaces etc.), then call rm -- for these files.

Use rm -f -- (with caution) if you are asked whether files should be removed, and you are sure you want to remove them.

floer32
  • 105
  • 1
  • 5
Ned64
  • 8,726
  • Ok, so it's for all commands, not just the one. – Mikhail Morfikov Jun 15 '15 at 09:44
  • The limit is one for the current shell, for the current command line. If you open many shells each will have this limit. xargs will call rm as many times as necessary, distributing the many file names that are fed to it by the find command such that the limit is not exceeded (each of the rm commands will be limited by the commandline length limit). – Ned64 Jun 15 '15 at 09:53