--/--/-- (--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2010/05/26 (水)
例えば

% ls
1.txt 2.txt 3.txt

これらのファイルを

1.c 2.c 3.c

に変更したい場合どうするのか。

もちろん

% mv *.txt *.c

なんて事はできません。気持ちはわかるけどね。

こういう時は、

% for i in *.txt
do
mv $i ${i%.txt}.c
done

とコマンドラインで打つと一括変換される。
要はmvコマンドがfor文で展開されるわけだ。
${i%.txt}ってのは変数iの値(文字列)の末尾の.txtを除いた値を返す変数展開。

ところで、こういったスクリプトをインタラクティブにシェルで入力する場合は、常識としてまずはechoを付けて実行する。

つまり
% for i in *.txt
do
echo mv $i ${i%.txt}.c
done

と打つ。
こうすると、実際にどのようにコマンドが展開されるかが出力される。
で、これで大丈夫だと思ったら

%^echo

と打つ。
すると前回のコマンドからechoを取り除いたコマンドが実行されるのだ。
こういう小技って、知ってればなんてことはないのだけれど知らないとちょっと損をする。
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事へのトラックバック
この記事のトラックバックURL
http://tochiii.blog119.fc2.com/tb.php/219-11468427
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。