Achatar diretórios de arquivos únicos

0

Eu passei eras tentando construir isso e dei uma boa olhada em uma maneira de fazer isso. Eu tenho uma árvore de diretórios que contém um conjunto de pastas e arquivos. Algumas das pastas contêm mais de um arquivo, mas a maioria contém apenas um.

Estou tentando mover todos os arquivos que estão sozinhos em diretórios um nível abaixo da raiz na raiz. Por exemplo:

  • A raiz é: / volume3
  • Arquivo único em uma subpasta: /volume3/20110103/20110103.log
  • O arquivo deve terminar como: /volume3/20110103.log

Eu sei como achatar toda a estrutura com bastante facilidade, mas é a parte condicional que eu não consigo descobrir como fazer. Alguém pode ajudar?

    
por Duncan 02.05.2011 / 00:19

1 resposta

0

Você pode conseguir isso usando um pequeno script de shell.

#!/usr/bin/env bash
# go to "root" folder
cd /volume3
# loop over all items in "root" folder
for item in "$( ls )" ;
do
    # if it's a folder
    if [ -d "$item" ] ; then
        # and only contains a single item
        if [ "$( ls "$item" | wc -l )" = "1" ] ; then
            # move all files in the folder to the "root" folder
            mv "$item/"* .
        fi
    fi
done

(não testado, mas não é um problema, já que pessoas sãs sempre mantêm backups)

    
por 02.05.2011 / 00:38

Tags