在 Windows DOS 中,我可以使用for
命令来大幅提高工作效率,并同时执行无数操作。在 PowerShell 中,它甚至更好。在 Linux 上,我很难做到。
我如何创建一批指向另一个驱动器上的某些文件夹的软链接?
如果这样做,ln -s 2013-02-*
它会做一些非常疯狂的事情并在随机文件夹中创建链接。
因此,我尝试使用命令替换,但echo
首先进行测试,问题是
echo 'prepend/'`ls /drive/ -1`
仅将 preprend/ 字符串添加到第一个条目的前面。这告诉我,尽管我曾经使用 remove 命令进行了命令替换,但它并没有像我想象的那样工作(为每个 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”)的文件列表。