Script shell para mover todos os arquivos das subpastas para a pasta pai

25

Eu tenho muitas pastas na pasta A . Eu quero mover os arquivos de todas as pastas para A .

Ou

Eu quero cortar todos os arquivos de pastas filhas e colá-los na pasta pai.

Como fazer isso?

    
por virpara 05.06.2012 / 07:32

2 respostas

52

Vá para o diretório A e execute

find . -mindepth 2 -type f -print -exec mv {} . \;

que significa "localizar todos os arquivos neste diretório e seus subdiretórios e executar mv com o diretório de destino. para cada arquivo encontrado para movê-los para o diretório atual.

    
por Tuminoid 05.06.2012 / 07:56
4

Bem, você poderia criar um arquivo e nomeá-lo como "cutme" (para criar um arquivo chamado cutme no tipo de terminal nano cutme . Para salvar pressione CTRL + X e pressione ENTER.) por exemplo e cole o seguinte nele assumindo que:

  1. Você deseja fazer isso recursivamente (em subpastas e subpastas dessas subpastas)
  2. Você quer pular a movimentação do arquivo de script
  3. Você tem permissão para mover os arquivos nessa pasta
  4. Os arquivos podem ou não incluir espaços em seus nomes

find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;

Anote o nome cutme dentro da linha. Deve ser o mesmo que o script que você executará.

Depois de criar o arquivo e colar a linha acima, execute o seguinte na mesma pasta do script:

chmod +x cutme . Isso dará ao seu novo arquivo o sinalizador "Executável" para que você possa executá-lo da seguinte forma: ./cutme .

    
por Luis Alvarado 05.06.2012 / 08:09

Tags