Linux For 风格命令

Luk*_*ett -4 linux bash

在 Windows DOS 中,我可以使用该for命令来大幅提高生产力并同时执行数以百万计的事情。在 PowerShell 中,它甚至更好。在 Linux 上,我很挣扎。

我如何制作一批软链接到另一个驱动器上的某些文件夹?

如果这样做,ln -s 2013-02-*它会做一些完全疯狂的事情,并在随机文件夹中创建链接。

所以我试图使用命令替换,但echo首先进行测试,问题是

echo 'prepend/'`ls /drive/ -1`
Run Code Online (Sandbox Code Playgroud)

仅将 preprend/ 字符串添加到第一个条目。这告诉我,虽然我使用 remove 命令进行了一次命令替换,但它并没有像我想象的那样工作(为每个 ls 结果生成一个命令)。

我又需要一个 for 循环了。我如何做“foreach $row in (ls -1) do (something)”?

pjc*_*c50 5

从您想要链接的文件夹开始,这将起作用:

ln -s sourcefolder/2013-02-* .
Run Code Online (Sandbox Code Playgroud)

当然有一个完全合理的“for”命令:

for var in path/* ; do echo "prepend$var" ; done
Run Code Online (Sandbox Code Playgroud)

编辑:使用一个程序向另一个程序提供参数列表的一般方法是反引号:``,因此您可以执行以下操作:

for x in `ls -1` ; do program $x ; done
Run Code Online (Sandbox Code Playgroud)

但是, ls 有一些魔力,因此如果您将它用作另一个程序的输入,则不需要输入 -1;你可以得到一个带有 * 模式(“glob”)的文件列表。