shellスクリプトでフォルダ内のテキストファイルを一つにまとめる

シェル概要

デスクトップ上のとあるフォルダ内にある拡張子txtのファイル全てに対して、ファイル名とファイルの中身がわかるようにして1つのファイルにまとめる。

使うシーン

  • フォルダ内に溜め込んだ日報を1つのファイルにまとめる。
  • チームの各メンバーにテキストファイルで入れてもらったメッセージを1つにまとめる。
  • メモ帳しかない状態でフォルダ内の全文検索を行いたいときに、フォルダ内の全てを1つのファイルにまとめ、そのファイルに対して検索を行う。
  • フォルダ内をシンプルにする。

ソース例

#!/bin/bash
files=`find /Users/hogehoge/Desktop/folder/*.txt -maxdepth 1 -type f`
for file in $files; do
    {
        echo "===================="
        fileName=`basename $file`
        echo "title: ${fileName}"  
        echo "- - - - - - - - - -"
        cat $file
    } >> result.txt
done

実行方法

ソース例をshellExample.shという名前のファイル(拡張子をtxtで保存しないように注意)で保存し、ターゲットとするフォルダ内に格納する。
ターミナルを開き、cdコマンド等を利用しターゲットのフォルダまで移動する。
sh shellExample.sh で実行できる。

ソースメモ

  • 変数に代入する際には$は不要。
  • >> result.txtで、result.txtにどんどん追記してくれる
  • コマンドの戻り値を変数に代入するときは、コマンドを`(バッククオート)でくくる。