複数のテキストファイルをまとめて空にするLinuxコマンド
文字列が入力された複数のテキストファイルが特定のディレクトリに保存されている場合に、一気にテキストファイルの中身を空文字(サイズをゼロ)にしてしまう便利なコマンドを紹介します。
findコマンドでリストアップし「-exec」オプションを使う
答えは、findコマンドを使って空にしたいテキストファイルをリストアップし「-exec」オプションで空ファイル(/dev/null)をテキストファイルに対してcpコマンドでファイルコピーするです。
$ cd /path/to/files/dir
$ find . -name '*.txt' -exec cp /dev/null > {} \;
「-name」オプションで空にしたいテキストファイルを絞り込む
「-name」オプションは空にしたいテキストファイルを抽出するためのオプションなので、条件に一致させたいテキストファイルのルールを記述しておくと処理時間の節約になるのでオススメです。
空のテキストファイルは/dev/nullをコピーすることで実現
findコマンドは「-exec」という便利なオプションがあり、抽出したファイルのファイル名を引数にして異なるコマンド(今回はテキストファイルをコピーするためのcpコマンド)に渡して処理させることができます。
そこで「-exec」オプションで「cp」コマンドを利用し、空のテキストファイルを表わす「/dev/null」を抽出したテキストファイルへコピーすることで空文字のファイルに変換することができるわけです。
2015-09-04