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