ラベル FOR の投稿を表示しています。 すべての投稿を表示
ラベル FOR の投稿を表示しています。 すべての投稿を表示

2008年7月2日水曜日

forを一行で書く

シェルでfor文を一行で書くと結構便利です。

基本は以下のように書くわけです。何らかの連続した動作をさせる時に重宝します。

for i in 1 2 3 4; do date; echo $i; done
例えば、そのままですが、決められたことを順番に動作させる場合、こんな感じです。
  • abc def ghi と順に表示
    $ for i in abc def ghi; do echo $i; done
    abc
    def
    ghi
  • host01 から host10 まで ping を発行
    $ for i in `seq -f "host%02.0f" 1 10`; do ping -c 1 $i; done
セミコロンの位置がややこしいですが、do と done の前にセミコロンと覚えておくとわかりやすいです。

2007年11月26日月曜日

特定の名前のファイルを削除

特定の名前のディレクトリ配下を削除 の関連です。

今度は、Windowsのコマンドプロンプトで、特定の名前のファイルを削除するコマンドです。

for /r %i in (*.txt) do del %i
でも、よくよく考えると、ファイル削除の場合は、以下のコマンドでもOKです。
del /s /q *.txt

2007年11月19日月曜日

特定の名前のディレクトリ配下を削除

Windowsのコマンドプロンプトで、カレントディレクトリ配下の特定の名前のディレクトリ配下を削除するコマンドです。

for /d /r %i in (abc*) do rd /s /q %i
FOR文を使用します。‘/d’は指定している‘abc’がディレクトリであることを示しています。‘/r’はカレントディレクトリからサブディレクトリを回帰的に検索して、対象のディレクトリを探します。

見つかったディレクトリをRDコマンドで削除します。

WindowsXPのヘルプによると、%iは、以下の様に変換(置換)できるようです。
  %~I         - すべての引用句 (") を削除して、I を展開します。
  %~fI        - %I を完全修飾パス名に展開します。
  %~dI        - %I をドライブ文字だけに展開します。
  %~pI        - %I をパス名だけに展開します。
  %~nI        - %I をファイル名だけに展開します。
  %~xI        - %I をファイル拡張子だけに展開します。
  %~sI        - 展開されたパスは短い名前だけを含みます。
  %~aI        - %I をファイルの属性に展開します。
  %~tI        - %I ファイルの日付/時刻に展開します。
  %~zI        - %I ファイルのサイズに展開します。
  %~$PATH:I   - PATH 環境変数に指定されているディレクトリを
                検索し、最初に見つかった完全修飾名に %I を
                展開します。
                環境変数名が定義されていない場合、または検索
                してもファイルが見つからなかった場合は、この
                修飾子を指定すると空の文字列に展開されます。
  %~dpI       - %I をドライブ文字とパスだけに展開します。
  %~nxI       - %I をファイル名と拡張子だけに展開します。
  %~fsI       - %I を完全なパスと短い名前だけに展開します。
  %~dp$PATH:I - PATH 環境変数に指定されているディレクトリを
                検索して %I を探し、最初に見つかったファイル
                のドライブ文字とパスだけに展開します。
  %~ftzaI     - %I を DIR コマンドの出力行のように展開します。