プロフィール
tmr
tmr
那覇の天気予報
-天気予報コム-
RSS feed meter for http://tmr.ti-da.net 人気blogランキングへ BS blog Ranking 週刊ブログ王 みんなのプロフィールSP
沖縄本島の中部に住む、Javaプログラマ♂。 2006年12月現在、39才。独身。
いろんな方から、コメントあしあと黒やトラックバックあしあとピンクを頂けるととても嬉しいです。
ちなみに、歌手のTMR(某西川貴教氏)とは無関係です。あしからず。
タブブラウザ Sleipnir 公式ページ(上級者向け)
tmr-blogの目次
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
[[tmr]] へメール

2006年05月20日

ファイル一括操作

このエントリはTonさんのblog「クマーなひとときw」2006年05月19日 シェルスクリプトというエントリに触発されて書きました。

unix系os(Linuxなど)で作業していると、多数のファイルの一括操作が必要な場合が多い。
一括操作の例としては、文字コード変換や水平TAB展開などがある。

この様な場合、簡単なシェルスクリプトを書いて、さらに find(1)xargs(1) を組み合わせると、人間様は楽をする事が出来る。




具体的な例を書いてみます。
命題:あるディレクトリ配下の全てのファイルを、EUC-JP/LFに変換し、水平TABを4スペースに展開する。ただし、アクセス権とタイムスタンプはもとのままにする。

人気blogランキングへ一日1クリック!!
作業:
1.以下の内容をファイル(例: /tmp/hoge.sh) に保存する。

#!/bin/sh
# echo "$# files"
for f in $* ; do
nkf -e -d $f | expand -4 > $f.xx
chmod --reference=$f $f.xx
touch --reference=$f $f.xx
mv $f.xx $f
done


2.上のファイルに実行権を与える
chmod +x /tmp/hoge.sh


3.対象ディレクトリにcdする

4.以下のコマンドを実行する
find . -type f | xargs /tmp/hoge.sh


以上。




以下の考え方がわかれば、いろいろと応用が利きます。
find(1) は、ファイル一覧などを標準出力に変換する
xargs(1) は、標準入力をコマンドの引数に変換する
sh(1)は、コマンド間にパイプを作り、出力を入力に繋げる




しかし、アレだな。我ながら、久しぶりに
ITっぽい(プログラマっぽい)事
を書いたなぁ~と…



Posted by tmr at 17:29 │Comments(2)unix
この記事へのコメント
ボクの苦手な分野ですねぇ。

今、仕事でサーバー、データベースなどの仕事がボクにまわってきて・・・四苦八苦しながら勉強しています。
今までしたWebPlanの仕事で、他人任せで自ら勉強してこなかったツケがまわってきているようです。(汗)

正直・・・向き不向きがあるのではないか?と弱音を吐いているボクってヘタレっすね。(苦笑)
Posted by ぴざ at 2006年05月22日 02:54
得手、不得手によって、チームで分担しましょう。

サーバ、データベース関連のお勉強、応援してますネ
Posted by tmr at 2006年05月22日 12:23
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。