Como faço para mover alguns arquivos, mas não todos, de um diretório para outro?

4

Eu preciso mover meus arquivos de um diretório para outro. Mas há alguns problemas. Meu padrão de nome de arquivo é como:

  apple.0, apple.<n>, n -> {0,1,2,3 ...~ }

então mv apple.* não funcionará, porque eu preciso manter o apple.0, que é sempre o ativo.

Como faço para movê-los com exceções (neste caso, mantendo apple.0)?

    
por Olgun Kaya 05.08.2011 / 10:47

3 respostas

4

Se você tiver bash e não se importar com os arquivos correspondentes, como apple.not-a-number , tente

shopt -s extglob
mv apple.!(0) /new/directory
    
por 05.08.2011 / 10:55
8

se você estiver usando o bash você deve ser capaz de usar

mv apple.[^0]* /other/directory/

isto moverá quaisquer arquivos dos quais a extensão não comece com 0 ("^" no início de [] significa "não" no bash). Se você tem certeza de que há apenas um caractere como final, você também pode usar

mv apple.[^0] /other/directory/

e se você tiver que garantir apenas os arquivos que terminam em números, você pode usar

shopt -s extglob
mv apple.@([1-9])*([0-9]) /other/directory/

isso não corresponderia à apple.01 ou semelhante embora ...

e um último que deve obter todos os arquivos da Apple terminados em números

shopt -s extglob
mv apple.*([1-9]|[0-9]+([0-9])) /other/directory/
    
por 05.08.2011 / 14:02
2

Para ser tão específico quanto você deseja no arquivo para mover e não mover

find /source/directory -maxdepth 1 -name "apple.*" ! -name "apple.0" -exec mv {} /new/directory \;
    
por 05.08.2011 / 15:14