ファイルの内容で番号の範囲を見つけ、その番号の範囲を含むファイルを別のディレクトリに移動するにはどうすればよいですか?

ファイルの内容で番号の範囲を見つけ、その番号の範囲を含むファイルを別のディレクトリに移動するにはどうすればよいですか?

OK、約90個のファイルがあり、各ファイルの本文は次のとおりです。

187942           78.9

2番目の列の値が70から90のファイルをフィルタリングして別のディレクトリに移動したいと思います。

ベストアンサー1

小さなスクリプトを使用して、awk良いファイルと悪いファイルを区別できます。たとえば、次のようになります。

#!/bin/bash
mkdir -p another-directory
for f in * ; do 
    if ! awk '$2>=70 && $2<=90 { exit 1; }' "$f" ; then
        mv -- "$f" another-directory/
    fi
done

ここで重要なのは、これがexit 1失敗の終了であることです。したがって、条件文withは、awk単に2番目のトークンが70から90(含む)の数である行の存在を検出します。それ以外の場合はawk正常に終了して成功します。感嘆符はこれを否定し、ファイルに良い行がある場合は条件をtrueにし、それ以外の場合はfalseにします。

おすすめ記事