递归地将文件从一个文件夹链接到另一个文件夹

时间:2018-03-12 09:12:08

标签: bash shell unix

我有以下结构:

/foo
/foo/pages
/foo/pages/page1
              file100.txt
              file101.txt
/foo/pages/page1/item1
              file199.txt
/foo/pages/page2
              filefoo202.txt
              bar3.txt
/foo/pages/page3
/foo/bar

我想在.txt中获取以/foo/pages结尾的每个文件,并在/foo/bar中创建符号链接。该命令将从/foo执行。

/foo/bar的最终结果将是:

/foo/bar
    file100.txt
    file101.txt
    file199.txt
    filefoo202.txt
    bar3.txt

注意:我使用的是Linux / Bash

3 个答案:

答案 0 :(得分:2)

find foo -type f -exec ln -s ../../{} foo/bar/ \;

相对符号链接来自创建文件的位置。

否则绝对符号链接:

find foo -type f -exec ln -s "$PWD"/{} foo/bar/ \;

答案 1 :(得分:1)

cd bar  # maybe 'mkdir bar' before
for i in ../pages/*.txt
do
  ln -s "$i"
done

答案 2 :(得分:0)

for i in `find ../pages/ -name "*.txt"`
do
    ln -s "$i" 
done