CSVファイルの列数を数え、列が11個未満の場合は名前を変更します。

CSVファイルの列数を数え、列が11個未満の場合は名前を変更します。

CSVファイルの列数を数える必要があります。 11個未満の場合は、サフィックスを追加してファイルの名前を変更します.bad。私はこれを試しましたが、私の要件には十分ではありません。

head -1 myfile.csv | sed 's/[^,]//g' | wc -c

ディレクトリ内のすべてのファイルに対してこれを行う必要があります。

ベストアンサー1

for file in *.csv; do
    cols=$( awk -F, 'NR == 1 {print NF; exit}' "$file" )
    if [[ "$cols" -lt 11 ]]; then
        mv -v "$file" "$file.bad"
    fi
done

または、awkの代わりにbashを使用してください。

for file in *.csv; do
    IFS=, read -ra fields <"$file"
    if [[ "${#fields[@]}" -lt 11 ]]; then
        mv -v "$file" "$file.bad"
    fi
done

おすすめ記事