删除仅包含一行的文件?

删除仅包含一行的文件?

csv我在一个文件夹中保存了大量文件。我只想删除csv包含一行的文件,我该怎么做?

答案1

名为 的文件中的行数MyFile.csv可以通过wc -l <MyFile.csv.可以将此数字与文件进行比较1并使用以下命令删除文件

if [ "$( wc -l <MyFile.csv )" -eq 1 ]; then
    rm -i MyFile.csv
fi

$(...)是一个命令替换,将被其中命令的输出替换。该-i选项rm使实用程序在删除任何内容之前要求确认。

要将其推广到当前目录中的所有 CSV 文件:

for filename in ./*.csv; do
    if [ "$( wc -l <"$filename" )" -eq 1 ]; then
        rm -i "$filename"
    fi
done

要进一步推广到当前目录或任何子目录中任何位置的所有 CSV 文件:

find . -type f -name '*.csv' -exec sh -c '
    for pathname do
        if [ "$( wc -l <"$pathname" )" -eq 1 ]; then
            rm -i "$pathname"
        fi
    done' {} +

请务必备份数据,尤其是当您打算测试运行脚本化文件删除时。

相关内容