複数のファイル内の文字列の置換

UNIXにおいて、ファイル内の文字列の置換にはsedコマンドを利用することができます。例えば、fruits.txtファイル内の文字列AppleをOrangeに置換するには、以下のように行います。

$ sed -i".bkp" -e "s/Apple/Orange/g" fruits.txt

ここで、パラメータ「-i」は対象のファイルを直接書き換えることを指定していますが、直後に文字列を指定することで、その文字列がファイル名の後ろに付いたバックアップファイル(fruits.txt.bkp)を作成させています。

複数のファイルに対して同時に処理を行いたい場合は、findとxargsコマンドをsedと組み合わせます。findはファイルを検索するためのコマンドで、xargsは標準入力から渡された値を引数として任意のコマンドを実行するためのコマンドです。例えば、カレントディレクトリに存在する全てのファイル中のAppleをOrangeに置換するには、以下のように行います。

$ find . -maxdepth 1 -type f | xargs sed -i".bkp" -e "s/Apple/Orange/g"

 

古いファイルの削除

UNIXにおいて、最終更新後一定期間経った古いファイルを削除するには、「find」コマンドを「-exec」パラメータと一緒に利用します。

$ find <Directory> -maxdepth 1 -mtime +<Days> -exec rm -f {} \;

各パラメーターの意味は以下のとおりです。

<Directory> 削除したファイルを含むディレクトリを指定します。
-maxdepth 1 1を設定することで指定したディレクトリ直下のファイルのみを検索の対象にします。
-mtime +<Days> 最終更新日から数えて、指定した日数を経過したファイルを対象にするという指定です。
-exec rm -f {} \; 検索の結果見つかったファイルを削除します。

 

ログアウトしてもバックグラウンドでジョブを継続させる

ログアウトしてもジョブを継続させるには、HUPシグナルを無視するために、nohupコマンドを利用します。

$ nohup <Command>

さらに、 バックグラウンドで実行するためには、コマンドの末尾に&を付けます。

$ nohup <Command> &

コマンドの標準出力と標準エラーは、コマンドを実行したディレクトリに作成されるnohup.outというファイルに出力されます。これを出力させないようにするには、標準エラーを標準出力にリダイレクトさせ、標準出力を/dev/nullにリダイレクトさせます。

$ nohup <Command> > /dev/null 2>&1 &

この形で利用する場合が多いかと思います。

Top