2012-04-16 103 views
2

我有一个文件夹(说/数据)与一组文件说:a.txt,b.bin,c.bak,d.txt,e.bin。我需要在文件夹(/ dataIL)中创建具有完全相同名称(1-1映射)的文件的链接。也就是说,/ dataIL应该有5个环节:创建链接的脚本

a.txt->../data/a.txt 
b.bin->../data/b.bin 
c.bak->../data/c.bak 
d.txt->../data/d.txt 
e.bin->../data/e.bin 

的命令创建一个链接是: LN -s ../data/a.txt A.TXT

想知道脚本命令,我可以运行以创建所有文件。请注意那些带有其他扩展名的文件。我只需要链接到任何扩展名的所有文件。

我有一个bash shell。谢谢。

回答

4

你可以简单的用星号来创建符号链接的所有文件,因为他们是在一个目录:

ln -s data/* . 

这是假设你想创建链接到所有文件data。还要注意,根据您的设置,这可能会跳过名称以点开头的文件。

+1

你甚至都不需要给最后一个参数'ln' - 默认情况下它使用当前目录。 – 2012-04-16 16:56:17

+0

谢谢。这工作。 – Romonov 2012-04-16 17:06:47

1
find ../data -maxdepth 1 -type f -exec bash -c "ln -s {} \`basename {}\`" \; 

../data可以是任意目录

+1

与Adam Zalcman的方法相比,唯一的优势在于,即使目录中存在大量文件,它也会继续工作。对大多数人来说这不是一个实际的问题。我会建议一个改进:直接执行'ln',就像这样:'-exec ln -s {}。 \;'。没有必要指定目标文件名,因为它将默认为源文件名。 – Sorpigal 2012-04-16 16:52:08