Mover todos os arquivos dos diretórios listados um nível acima

1

Eu tenho uma árvore de diretórios, eu preciso remover alguns deles e mover todos os arquivos desses diretórios um nível acima.

Eu sei como fazer isso passo a passo, mas existem milhares deles, então eu preciso otimizar o processo.

Eu procuro os diretórios find . -type d -name 'src' e, em seguida, preciso mover todos os arquivos dos diretórios encontrados um nível acima ( ../ ).

root
- one
-- two
--- src
- three
-- four
--- five
---- src

O conteúdo do primeiro src deve ser movido para two , segundo src para five

Como posso fazer isso com um script?

    
por lasoweq 09.11.2017 / 07:15

3 respostas

1

Algo como:

find . -type d -name src -exec sh -c 'cd "$1"; for f in *; do mv -i "$f" .. ; done' find-sh {} \;

Observe o -i flag para mv . Se você pedir uma confirmação sobre a sobrescrita de alguma coisa, você deve dizer "não", a menos que esteja esperando por ela.

Como você disse que também deseja remover os diretórios src , use:

find . -type d -name src -exec sh -c 'cd "$1"; for f in *; do mv -i "$f" .. ; done' find-sh {} \; -exec rmdir {} \;

Faça um backup primeiro.

    
por 09.11.2017 / 07:40
1

Assumindo que não há aninhados src como seus subdiretórios em cada nível e o src é o nível mais recente do diretório, então abaixo deve fazer o trabalho.

find . -path '*/src/*' -type f -execdir echo mv -t ../ {} +
    
por 09.11.2017 / 08:46
1

A maneira mais segura que eu sei é:

  1. cd "onde estão seus diretórios"
  2. Agora use tar para salvá-los em algum lugar: tar -cvf "nome do arquivo para salvar como /tmp/mysavfil.tar" "nome de todos os diretórios, como: foo bar e assim por diante", para obter: %código%
  3. Em seguida, faça: tar -cvf /tmp/mysavfil.tar foo bar
  4. Então: cd ..
  5. Opcionalmente, se desejar excluir os arquivos não mais necessários da seguinte forma: tar xvf /tmp/mysavfil.tar "o local original onde seus arquivos estavam"; %código%; %código%
  6. Você terminou

Uma maneira muito mais simples é fazer:

  • cd
por 26.03.2018 / 00:08

Tags