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?

2
  • Part of the question is probably a duplicate, but the answer also contains a solution to the task at hand, while the other question does not. Commented Jun 15, 2015 at 9:42
  • Yes it solves partially. But I think it's enough for me. Commented Jun 15, 2015 at 9:45

1 Answer 1

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.

2
  • Ok, so it's for all commands, not just the one. Commented Jun 15, 2015 at 9: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). Commented Jun 15, 2015 at 9:53

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.