Find all zero-byte files in directory and subdirectories

后端 未结 4 603
南笙
南笙 2021-01-30 03:05

How can I find all zero-byte files in a directory and its subdirectories?

I have done this:

#!/bin/bash
lns=`vdir -R *.* $dir| awk \'{print $8\"\\t\"$5}\         


        
相关标签:
4条回答
  • 2021-01-30 03:20

    Bash 4+ tested - This is the correct way to search for size 0:

    find /path/to/dir -size 0 -type f -name "*.xml"
    

    Search for multiple file extensions of size 0:

    find /path/to/dir -size 0 -type f \( -iname \*.css -o -iname \*.js \)
    

    Note: If you removed the \( ... \) the results would be all of the files that meet this requirement hence ignoring the size 0.

    0 讨论(0)
  • 2021-01-30 03:21

    No, you don't have to bother grep.

    find $dir -size 0 ! -name "*.xml"
    
    0 讨论(0)
  • 2021-01-30 03:35

    As addition to the answers above:

    If you would like to delete those files

    find $dir -size 0 -type f -delete
    
    0 讨论(0)
  • 2021-01-30 03:36

    To print the names of all files in and below $dir of size 0:

    find "$dir" -size 0
    

    Note that not all implementations of find will produce output by default, so you may need to do:

    find "$dir" -size 0 -print
    

    Two comments on the final loop in the question:

    Rather than iterating over every other word in a string and seeing if the alternate values are zero, you can partially eliminate the issue you're having with whitespace by iterating over lines. eg:

    printf '1 f1\n0 f 2\n10 f3\n' | while read size path; do
        test "$size" -eq 0 && echo "$path"; done
    

    Note that this will fail in your case if any of the paths output by ls contain newlines, and this reinforces 2 points: don't parse ls, and have a sane naming policy that doesn't allow whitespace in paths.

    Secondly, to output the data from the loop, there is no need to store the output in a variable just to echo it. If you simply let the loop write its output to stdout, you accomplish the same thing but avoid storing it.

    0 讨论(0)
提交回复
热议问题