Mova todos os subdiretórios e seus conteúdos para o diretório de trabalho atual

0

Eu gostaria de saber se é possível mover todos os subdiretórios e seus conteúdos dentro do meu diretório de trabalho para o diretório de trabalho, para que os subdiretórios se tornem diretórios primários na árvore.

por exemplo:

Estou em workingdir , por dentro temos folder1 , folder2 , folder3 , etc

agora a pasta 1, 2 e 3 já são diretórios principais dentro do diretório de trabalho, mas quando chegamos em folder4 , há um subdiretório dentro do qual tem o mesmo nome folder4 , em seguida, conteúdo e isso continua folder5 , folder6 para folder100andsomething .

O que eu gostaria é executar um comando para mover os subdiretórios folder4 até folder100andsomething juntamente com o conteúdo deles dos diretórios pai e para o diretório de trabalho, Então, no final, eu teria folder1 - folder100andsomething como diretórios principais e um monte de pais vazios errôneos. Para limpar, posso executar um comando para remover todos os diretórios pai vazios.

    
por Johnny 04.03.2017 / 23:10

1 resposta

0

Com find e rename :

$ find . -mindepth 3 | rename -n 's:([^/]+)/:$1:'  
./folder10/folder10/blah10 -> ./folder10/blah10
./folder9/folder9/blah9 -> ./folder9/blah9
./folder8/folder8/blah8 -> ./folder8/blah8
./folder7/folder7/blah7 -> ./folder7/blah7
./folder6/folder6/blah6 -> ./folder6/blah6
./folder5/folder5/blah5 -> ./folder5/blah5
./folder4/folder4/blah4 -> ./folder4/blah4

O regex ([^/]+)/ corresponde ao texto que é repetido e tem um / entre (assim, folder4/folder4 , etc.). A substituição é apenas a parte que foi repetida (portanto, apenas folder4 ).

A opção -n mostra apenas quais alterações serão feitas. Se as alterações parecerem corretas, execute-as sem realmente executar as alterações.

    
por muru 05.03.2017 / 07:48