0

我想要一个 bash 脚本来循环遍历目录树,并在没有树的情况下将符号链接到一个新目录,但将文件名更改为一个告诉目录的新目录。

像这样的东西:

起源:

目录

-- 目录A

---- 目录AA

------ 文件AA1

------ 文件AA2

----文件A1

----文件A2

-- 目录 B

----文件B1

-- 目录C

----文件C1

----文件C2

----文件C3

目的地:

目录目的地

--DirectoryA - DirectoryAA - FileAA1

--DirectoryA - DirectoryAA - FileAA2

--目录A - 文件A1

--目录A - 文件A2

--目录B-文件B1

--目录C-文件C1

--目录C-文件C2

--目录C-文件C3

4

1 回答 1

0

这应该这样做:

cd Directory; find * -type f -print0 | xargs -l -0 bash -c 'filename=`echo "$0" | tr '/' -`; ln -s $(pwd)/$0 ../DirectoryDest/$filename'

这将产生这些文件:

user@machine:~$ ls -l DirectoryDest/
total 0
lrwxrwxrwx 1 user user 51 Jul 27 23:02 DirectoryA-DirectoryAA-FileAA1 -> /home/user/Directory/DirectoryA/DirectoryAA/FileAA1
lrwxrwxrwx 1 user user 51 Jul 27 23:02 DirectoryA-DirectoryAA-FileAA2 -> /home/user/Directory/DirectoryA/DirectoryAA/FileAA2
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryA-FileA1 -> /home/user/Directory/DirectoryA/FileA1
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryA-FileA2 -> /home/user/Directory/DirectoryA/FileA2
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryB-FileB1 -> /home/user/Directory/DirectoryB/FileB1
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC1 -> /home/user/Directory/DirectoryC/FileC1
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC2 -> /home/user/Directory/DirectoryC/FileC2
lrwxrwxrwx 1 user user 38 Jul 27 23:02 DirectoryC-FileC3 -> /home/user/Directory/DirectoryC/FileC3
于 2013-07-28T05:05:21.480 回答