Find And Remove Files With One Command in Linux/Unix
The basic find command syntax is:
find dir-name criteria action
- dir-name : – Defines the working directory such as look into /tmp/
- criteria : Use to select files such as “*.sh”
- action : The find action (what-to-do on file) such as delete the file.
To remove multiple files such as *.jpg or *.sh with one command find, use:
find . -name "FILE-TO-FIND" -exec rm -rf {} \; OR find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
The only difference between above two syntax is that the first command remove directories as well where second command only removes files.
Options:
- -name “FILE-TO-FIND” : File pattern.
- -exec rm -rf {} \; : Delete all files matched by file pattern.
- -type f : Only match files and do not include directory names.
Examples:
Find all files having .bak (*.bak) extension in the current directory and remove them:
$ find . -type f -name "*.bak" -exec rm -f {} \;
Find all core files in the / (root) directory and remove them (be careful with this command):
$ find / -name core -exec rm -f {} \;
Find all *.bak files in the current directory and removes them with confirmation from user:
$ find . -type f -name "*.bak" -exec rm -i {} \;0