user@osx:~/from$ find . -type d -exec mkdir -p ~/to/{} \;
user@osx:~/from$ find . -type f -exec ln -s ~/from/{} ~/to/{} \;
ou
user@osx:~/from$ find . -type f -exec touch ~/to/{} \;
Gostaria de duplicar a estrutura do diretório em algum diretório para outro, sem copiar nenhum arquivo real. No lugar dos arquivos, eu gostaria de um arquivo em branco com o mesmo nome ou um link simbólico para o local original.
Como eu poderia fazer isso no OS X? Ferramentas de linha de comando (rsync / find / tar / whatever), shell scripts, etc., são todas aceitáveis, o software que tenho que comprar provavelmente não é.
Experimente lndir
. De sua página de manual:
The lndir program makes a shadow copy todir of a directory tree
fromdir, except that the shadow is not populated with real files but
instead with symbolic links pointing at the real files in the fromdir
directory tree.
Outra solução que funciona para mim é usar rsync
e excluir todos os arquivos, por exemplo,
$ rsync -a /path/from/ /path/to/ --include \*/ --exclude \*
O --include \*/
especifica que todos os diretórios devem ser copiados e --exclude \*
especifica que todos os arquivos devem ser excluídos da cópia.
A beleza disso é que a nova hierarquia de diretórios possui os mesmos atributos, registros de data e hora, permissões, etc. como o original.
Aqui está mais uma variação do método rsync
, que manterá ícones de pasta e marcadores de localização:
rsync -Ea /path/from/ /path/to/ --include="*/" --include="Icon*" --exclude="*"
Isso não copia aliases de arquivos, então você pode querer combiná-lo com a resposta do whitequark acima.
Isto irá encontrar os diretórios dentro temp, remover o líder / home / bryan / deles e crie os novos diretórios
for i in 'find /home/bryan/temp -type d| sed 's/\/home\/bryan\///g''
do mkdir $i
done
Sugiro digitar o código uma linha de cada vez (desta forma, os pontos-e-vírgulas (não mostrados) serão colocados corretamente)
Tags macos file-management