同時に複数のテキストから特定の行を取得する方法は?

同時に複数のテキストから特定の行を取得する方法は?

同じディレクトリにtext1.txt、text2.txt、...、text100.txtという100のテキストがあるとします。各テキストから特定の行(最初の100行)を抽出し、この行を別の新しい100行のテキストに別々に保存したいと思います。各新しいテキストには10​​0行があります。

わかりましたhead -100 text1.txt > text1_new.txthead -100 text2.txt > text2_new.txtできます。しかし、端末から両方を抽出するより効率的な方法はありますか?

ありがとうございます! !

ベストアンサー1

一つの方法は

find . -name "text*.txt" -type f -print0 | xargs -0 -I{} sh -c 'f="{}"; head -100 "$f" > "${f%.txt}_new.txt"'
  • find . -name "text*.txt" -type fディレクトリ内のすべてのテキストファイルを探す
  • -print0スペースを保存するために、ヌル文字でファイルパスを印刷します。
  • xargs -0NULLで終わるパラメータを受け入れます。
  • -I{}パラメータとして使用するプレースホルダ
  • sh -cコマンド文字列を使用してダッシュを実行する
  • f="{}"パラメータを変数に保存f
  • head -100 "$f"ヘッダーコマンド
  • "${f%.txt}_new.txt"パラメータの「.txt」を「_new.txt」に置き換えます。

おすすめ記事