文字列を使用して複数のファイルを確認する

文字列を使用して複数のファイルを確認する

つまり、各.csvファイルに対して次のことを行います。

  • ファイルの最初の行に「HEADER」文字列が含まれていることを確認してください。紛失した場合は、次の操作を行います。

    1. 「エラー:HEADERレコードがありません」と表示されます。
    2. ファイル名を.csvから.headに変更します。
    3. 次のファイルに進む

答え1

for f in *.csv; do
  IFS= read -r line < "$f" &&
    case $line in (*HEADER*) continue; esac

  printf >&2 'ERROR: Missing HEADER record for "%s"\n' "$f"
  mv -- "$f" "${f%.*}.head"
done

答え2

努力する:

for _file in *.csv
do
    if ! grep -q 'HEADER' <(head -n 1 -- "$_file")
    then
        echo >&2 "ERROR: Missing HEADER record for $_file"
        # mv -- "$_file" "${_file%.*}.head"
        echo "$_file" "${_file%.*}.head"
    fi
done

lineを使用してecho正常に動作していることを確認し、すべてが正常な場合はmvlineを試してください。

関連情報