Delete All Files of a Directory in Linux
Here is a quick Linux command tips on deleting the contents of a directory, not the directory itself.
At times you'll need to delete all the files of a directory. Not the directory itself but the contents of the directory. You could do it to clean up a project, free up space or for any other purpose.
To empty a directory, you use the following command:
rm -r path_to_dir/*
The wild card means everything here. So, you are instructing the rm command to remove everything in the given directory.
Please note that this is different than using rm on the directory name directly without
/*. If you use
rm -r dir, it will delete the directory along with its contents. That's not always desirable. Is it?
Let's see about deleting all the contents of a directory in detail.
Properly removing all files in a directory
Linux command line does not have a recycle bin. You have to be careful while deleting files. And if you have to remove multiple files using wildcard, you must be extra cautious.
This is why I advise switching to the directory you want to empty and then using the rm command. This reduces the risk of accidentally deleting the contents of a wrong directory.
Step 1: Go to the desired directory
Use the cd command to switch to the directory you want to empty.
For example, I am going to delete all the contents of the
/home/abhishek/sample directory. So, I switch to it first.
It's good to ensure that you are in the current directory:
Step 2: List the directory contents
You should check the directory contents to ensure that you are not deleting any important files. I advise showing hidden files as well.
If there are sub-directories, please ensure nothing important is in there.
Step 3: Delete all files and folders in the directory
Once you are sure that nothing important is in the directory, it is time to delete the contents.
You can use the rm command like this:
rm -r *
Which is a way of instructing the rm command to delete everything it sees in the current directory recursively. The recursive option
-r is essential for removing sub-directories.
Sometimes, there are write protected files and then you'll be asked to confirm the removal. To avoid that, you can include the forced delete option
rm -rf *
rm -rf *.
To delete only the hidden files, you can additionally run this command:
rm -rf .*
While deleting all the contents of a directory without deleting the directory itself seems like an easy job, things get a bit complicated if there are hidden files and folders.
In those cases, you have to run
rm -rf .* after
rm -rf *.
I hope you liked this quick little Linux command line tip. Let me know if you have questions or suggestions.