如何删除linux服务器中超过1行的文件?

如何删除linux服务器中超过1行的文件?

我在特定目录中存在大量文件列表(带有完整路径)。我试图从此目录中删除文件中行数大于 1(2 或更多)的文件。

如何做呢?

答案1

你可以用这个。在执行之前,您应该首先尝试使用echo而不是rm

for i in dir/*; do
  lines=$(wc -l "$i")
  if test $lines -gt 1; then
    rm "$i"
  fi
done

答案2

尝试这个,

find . -type f -maxdepth 1 -exec bash -c '[[ $(wc -l < "$1") -gt 1 ]] && rm "$1"' _ '{}' \;
  • . -type f -maxdepth 1查找当前目录中的文件
  • $(wc -l < "$1") -gt 1检查 的行数是否大于 1
  • rm "$1"' _ '仅删除当前目录中的文件。

答案3

解决方案awk

wc -l /path/to/dir/* | head -n -1` | awk '$1>1 {print $2}' | xargs rm

笔记:

  • 该简单版本不支持特殊字符
  • 请记住,计算的wc -l不是行数,而是换行符的出现次数。因此,具有两行的文件(但第二行没有 LF)将被报告为具有“1”行。

相关内容