我在特定目录中存在大量文件列表(带有完整路径)。我试图从此目录中删除文件中行数大于 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
检查 的行数是否大于 1rm "$1"' _ '
仅删除当前目录中的文件。
答案3
解决方案awk
:
wc -l /path/to/dir/* | head -n -1` | awk '$1>1 {print $2}' | xargs rm
笔记:
- 该简单版本不支持特殊字符
- 请记住,计算的
wc -l
不是行数,而是换行符的出现次数。因此,具有两行的文件(但第二行没有 LF)将被报告为具有“1”行。