Unix 管道:find | ln -s

Unix 管道:find | ln -s

我正在尝试使用以下命令对一些 php 文件进行符号链接:

find `pwd` -name "*.php" | ln -s * /home/frankv/www/bietroboter.de/symlinks

但是,所有符号链接都已损坏,因为小 * 不引用完整路径,只引用文件名本身。当我使用以下命令将它们写入文件时:

find `pwd` -name "*.php" > test.txt

可以了。我该如何正确地进行管道传输?另外,我该如何告诉它我不想要任何包含“.php~”的“.php”文件

答案1

管道从一个进程获取标准输出并将其连接到下一个进程的标准输入;这对于您要执行的操作没有任何意义(ln不对标准输入执行任何操作)。

你可能想要这样的东西(未经测试):

find `pwd` -name "*.php" -execdir ln -s {} /home/frankv/www/bietroboter.de/symlinks \;

答案2

您还可以使用 xargs 从标准输入执行命令:

find密码-name "*.php" | xargs ln -s -t /home/frankv/www/bietroboter.de/symlinks

相关内容