同じディレクトリにtext1.txt、text2.txt、...、text100.txtという100のテキストがあるとします。各テキストから特定の行(最初の100行)を抽出し、この行を別の新しい100行のテキストに別々に保存したいと思います。各新しいテキストには100行があります。。
わかりましたhead -100 text1.txt > text1_new.txt
…head -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 -0
NULLで終わるパラメータを受け入れます。-I{}
パラメータとして使用するプレースホルダsh -c
コマンド文字列を使用してダッシュを実行するf="{}"
パラメータを変数に保存f
head -100 "$f"
ヘッダーコマンド"${f%.txt}_new.txt"
パラメータの「.txt」を「_new.txt」に置き換えます。