はじめに

こんにちは!今回はfoldコマンドについて解説します。

foldは長すぎるテキスト行を指定した幅で折り返すコマンドです。長い1行を複数行に分割する時に超便利!

メール本文を80文字幅で表示したり、古いターミナルに対応させたりする時に活躍するコマンドなので、これを機にマスターしちゃいましょう!

foldコマンドとは

foldは、入力ファイルの行を指定された文字幅で折り返して出力する外部コマンドです。

例えば、1000文字の長い行があった場合、fold -w 80を使えば80文字ごとに行を分割できます。テキストメールやレポートを一定幅で整形したい時に重宝します。

基本構文

1
fold [オプション] [ファイル...]

ファイルを指定しない場合は標準入力から読み込みます。

主なオプション

オプション 説明
-w 折り返し幅を指定(デフォルトは80)
-b バイト単位で折り返す
-s 単語の途中では折り返さない(スペースで折り返す)
-c マルチバイト文字を1文字として扱う(GNU拡張)

使用例

例1: デフォルト幅(80文字)で折り返し

1
2
echo "This is a very long line that contains so much text \
  that it will exceed the eighty character width." | fold

実行結果:

1
2
3
This is a very long line that contains so much text that it will d
efinitely exceed the default width of eighty characters when displa
yed on a terminal.

デフォルトの80文字幅で折り返されます。

例2: 指定幅で折り返す

1
echo "The quick brown fox jumps over lazy dog." | fold -w 40

実行結果:

1
2
The quick brown fox jumps over the lazy
dog multiple times with more text.

40文字幅で折り返します。

例3: 30文字幅で折り返す

1
echo "Hello world example" | fold -w 30

実行結果:

1
Hello world example

30文字幅での折り返しです。

例4: 単語の途中では折り返さない

1
echo "The quick brown fox jumps over the lazy dog." | fold -w 20 -s

実行結果:

1
2
3
The quick brown fox
jumps over the lazy
dog.

-sオプションで単語の途中では折り返さず、スペースで折り返します。

例5: バイト単位で折り返す

1
echo "0123456789" | fold -w 5 -b

実行結果:

1
2
01234
56789

バイト単位(厳密には指定幅)で折り返します。

例6: ファイルの内容を折り返す

1
fold -w 60 document.txt

実行結果:

1
(document.txtの内容が60文字幅で折り返される)

ファイルを指定して折り返せます。

例7: 複数ファイルを処理

1
fold -w 50 file1.txt file2.txt file3.txt

実行結果:

1
(3つのファイルが50文字幅で折り返される)

複数ファイルを同時に処理できます。

例8: パイプで利用

1
cat data.txt | fold -w 70 | head -20

実行結果:

1
(最初の20行が70文字幅で折り返される)

他のコマンドと組み合わせて使用できます。

例9: 日本語テキストの折り返し

1
echo "これは日本語の長いテキストです。このテキストは複数行に折り返されるべきです。" | fold -w 20

実行結果:

1
2
3
これは日本語の長いテキスト
です。このテキストは複数行
に折り返されるべきです。

日本語の折り返しも可能です。

例10: メール本文を80文字幅で整形

1
cat email_body.txt | fold -w 80 > formatted_email.txt

実行結果:

1
(ファイルが保存される)

メール本文を標準的な80文字幅に整形して保存できます。

Tips・注意点

折り返し幅のデフォルト値

-wを指定しない場合は80文字幅で折り返されます。

1
2
fold file.txt       # 80文字幅
fold -w 100 file.txt # 100文字幅

単語の途中での折り返しを避ける

-sオプションを使うと、単語の途中では折り返さず、スペースの位置で折り返します。

1
2
3
4
5
# 単語が分割される可能性あり
fold -w 30 file.txt

# スペースで折り返す
fold -w 30 -s file.txt

マルチバイト文字の処理

日本語などマルチバイト文字を扱う場合は注意が必要です。

1
2
3
4
5
# バイト単位での折り返し
fold -w 30 -b japanese.txt

# 文字単位での折り返し(GNU拡張)
fold -w 30 -c japanese.txt

実践的な使い方

メールの整形

1
cat draft.txt | fold -w 78 | tee formatted.txt | mail [email protected]

メール本文を標準的な幅に整形して送信します。

ドキュメントの整形

1
fold -w 72 -s original.txt > formatted.txt

ドキュメントを72文字幅で整形して保存します。

ログファイルの整形表示

1
cat app.log | fold -w 120 | less

長いログエントリを120文字幅に折り返して、lessで閲覧します。

まとめ

foldコマンドのポイント:

  • 長い行を指定幅で折り返す基本コマンド
  • -wオプション: 折り返し幅を指定(デフォルトは80)
  • -sオプション: 単語の途中では折り返さない
  • -bオプション: バイト単位で折り返す
  • メール本文やドキュメントの整形に便利
  • よく使う組み合わせ: fold -w 80fold -w 72 -s

長いテキストを一定幅で折り返したい時はfoldを使いましょう!