Saturday, 25 May 2019

linux - Delete matching files in all subdirectories


How can I remove all .swp files in all of my subdirectories under Linux?



Answer



Remove all *.swp files underneath the current directory, use the find command in one of the following forms:




  • find . -name \*.swp -type f -delete

    The -delete option means find will directly delete the matching files. This is the best match to OP's actual question.

    Using -type f means find will only process files.




  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    Option -exec allows find to execute an arbitrary command per file. The first variant will run the command once per file, and the second will run as few commands as possible by replacing {} with as many parameters as possible.




  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    Piping the output to xargs is used form more complex per-file commands than is possible with -exec. The option -print0 tells find to separate matches with ASCII NULL instead of a newline, and -0 tells xargs to expect NULL-separated input. This makes the pipe construct safe for filenames containing whitespace.




See man find for more details and examples.


No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...