linuxbashrm

How to delete multiple files at once in Bash on Linux?


I have this list of files on a Linux server:

abc.log.2012-03-14
abc.log.2012-03-27
abc.log.2012-03-28
abc.log.2012-03-29
abc.log.2012-03-30
abc.log.2012-04-02
abc.log.2012-04-04
abc.log.2012-04-05
abc.log.2012-04-09
abc.log.2012-04-10

I've been deleting selected log files one by one, using the command rm -rf see below:

rm -rf abc.log.2012-03-14
rm -rf abc.log.2012-03-27
rm -rf abc.log.2012-03-28

Is there another way, so that I can delete the selected files at once?


Solution

  • Bash supports all sorts of wildcards and expansions.

    Your exact case would be handled by brace expansion, like so:

    $ rm -rf abc.log.2012-03-{14,27,28}
    

    The above would expand to a single command with all three arguments, and be equivalent to typing:

    $ rm -rf abc.log.2012-03-14 abc.log.2012-03-27 abc.log.2012-03-28
    

    It's important to note that this expansion is done by the shell, before rm is even loaded.