Symlink todos os arquivos em um diretório com toda a árvore de diretórios

1

Agora eu uso isso

ln -s /dir/* /dir2/

Qual vai ligar tudo, mas eu tenho que ir dentro do dir e fazer um novo diretório porque as pastas também são linkadas (isso é esperado).

Então, aqui está o que estou tentando alcançar: Symlink todos os arquivos, mas quando houver uma pasta, crie um diretório com o mesmo nome e crie uma ligação simbólica para os arquivos dentro dessa pasta e dentro dessa pasta, etc.

Muito parecido com o GNU cp com o -al flag, que obtive executando brew install coreutils .

gcp -al /dir1/ dir2/ 

Isso faz o que eu quero, exceto que eles são hard links e não links simbólicos.

    
por DisplayName 01.12.2014 / 11:28

1 resposta

0

Eu acho que você deve separar o tratamento de arquivos do manuseio de diretórios. Faça os diretórios primeiro. No mundo GNU:

cd /dir2
find /dir -mindepth 1 -maxdepth 1 -type d -exec mkdir {} \;

E depois os links simbólicos:

find /dir -mindepth 1 -maxdepth 1 -type f -exec ln -s -t /dir2 {} +
    
por 01.12.2014 / 11:54

Tags