如何查找包含16行的文件?

use*_*340 5 bash awk grep

我必须在Bash中找到包含16行的文件.

我的想法是:

find -type f | grep '/^...$/'
Run Code Online (Sandbox Code Playgroud)

有谁知道怎么用find+ grep或者find+ awk

然后,

  • 将匹配文件移动到另一个目录.
  • 删除所有不匹配的文件.

Ben*_*oit 6

我会这样做:

wc -l **/* 2>/dev/null | awk '$1=="16"'
Run Code Online (Sandbox Code Playgroud)


Ed *_*ton 5

把事情简单化:

find . -type f |
while IFS= read -r file
do
    size=$(wc -l < "$file")
    if (( size == 16 ))
    then
        mv -- "$file" /wherever/you/like
    else
        rm -f -- "$file"
    fi
done
Run Code Online (Sandbox Code Playgroud)

如果您的文件名可以包含换行符,那么谷歌会查找和读取选项来处理它.