在 Windows DOS 中,我可以使用該for
命令來大幅提高工作效率並同時執行無數的事情。在 PowerShell 中,效果甚至更好。在 Linux 上,我很掙扎。
如何建立一批到另一個磁碟機上的某些資料夾的軟連結?
如果這樣做,ln -s 2013-02-*
它會做一些完全瘋狂的事情,並在隨機資料夾中建立連結。
所以我嘗試使用命令替換,但echo
首先進行測試,問題是
echo 'prepend/'`ls /drive/ -1`
僅將 prepred/ 字串新增至第一個條目之前。這告訴我,雖然我使用刪除命令進行了一次命令替換,但它並沒有按照我想像的方式工作(為每個 ls 結果生成一個命令)。
我又開始需要 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”)的檔案清單。