Windows DOS では、for
コマンドを使用して生産性を大幅に向上させ、一度に膨大な数の作業を実行できます。PowerShell ではさらに優れています。Linux では苦労します。
別のドライブ上のいくつかのフォルダーへのソフトリンクのバッチを作成するにはどうすればよいですか?
これを実行すると、ln -s 2013-02-*
まったくおかしなことが行われ、ランダムなフォルダーにリンクが作成されます。
そこでコマンド置換を使おうとしたのですが、echo
まずテストしてみると、問題は
echo 'prepend/'`ls /drive/ -1`
最初のエントリにのみ preprend/ 文字列を追加します。これは、remove コマンドでコマンド置換が一度機能したにもかかわらず、思ったように機能しない (ls 結果ごとに 1 つのコマンドを生成する) ことを示しています。
再び for ループが必要になります。「foreach $row in (ls -1) do (something)」を実行するにはどうすればいいでしょうか?
答え1
リンクを入れたいフォルダーから始めると、次のように動作します:
ln -s sourcefolder/2013-02-* .
もちろん、完全に合理的な「for」コマンドもあります。
for var in path/* ; do echo "prepend$var" ; done
編集: あるプログラムを使用して別のプログラムに引数のリストを提供する一般的な方法は、バッククォート: `` です。つまり、次のように実行できます。
for x in `ls -1` ; do program $x ; done
ただし、ls には魔法があり、別のプログラムへの入力として使用する場合は -1 を指定する必要はなく、* パターン ("glob") を使用してファイルのリストを取得できます。