All Posts programming How to remove all empty plain text files using GNU utils ?

How to remove all empty plain text files using GNU utils ?

ยท 365 words ยท 2 minute read

I was working on a project that automate some data analysis and statistics. In that script I rely heavily on creating and modifying plain text files. After running that script for hours I got hundreds of plain-text files. So, I need to remove all empty ones.

Here are the ways I used to remove all empty text files.

List all empty text files ๐Ÿ”—

I run this code to get all empty files, to make sure it grabs empty files.

find . -type f -name "*.txt" -size 0

Remove the empty files ๐Ÿ”—

Then I re-run the command but append -delete to it, to remove all files it grabs.

find . -type f -name "*.txt" -size 0 -delete

Here is a break down for the command:

  • find .: This starts the find command and tells it to search in the current directory (.) and all its subdirectories.
  • -type f: This option limits the search to regular files (not directories, symbolic links, etc.).
  • -name "*.txt": This further filters the search to only files ending with the .txt extension. If you want to delete all empty files, regardless of extension, omit this part.
  • -size 0: This option selects files with a size of 0 bytes, which are empty files.
  • -delete: This option deletes the files that match the criteria. It’s often a good idea to first run the command without -delete to see which files will be affected (and that is my cautious strategy always).

Not GNU find ๐Ÿ”—

This solution relies on GNU find, which is the standard on most Linux systems. On other Unix-like systems, the -delete option may not be available. If it is not available, you can use the -exec rm {} \; option instead:

find . -type f -name "*.txt" -size 0 -exec rm {} \;

This alternative approach executes the rm (remove) command for each found file.

I hope you enjoyed reading this post as much as I enjoyed writing it. If you know a person who can benefit from this information, send them a link of this post. If you want to get notified about new posts, follow me on YouTube , Twitter (x) , LinkedIn , and GitHub .