Copie determinados arquivos de subdiretórios especificados em um subdiretório separado

2

Eu quero copiar todos os arquivos .fastq de todos os subdiretórios que terminem em '_CSF' em outro subdiretório já criado, dir1_CSF.

Eu entendo como copiar certos arquivos, mas não de certos diretórios.

Novo no shell de scripts, seria ótimo para alguma assistência.

    
por Alexandra Carey 03.06.2015 / 22:26

2 respostas

2

Usando o shell, você pode fazer assim:

find *_CSF -type f -iname "*.fastq" -exec cp {} dir1_CSF/ \;
    
por 03.06.2015 / 22:32
0

Defina DIR como o diretório de nível superior e TARGET é o seu diretório de destino. Então corra:

find $DIR \( -type d -name "$TARGET" -prune \) -o \
\( -type f -name "*.fastq" -exec cp -t "$TARGET" {}  + \)

Sim, esse é o comando. Isso está supondo que o GNU encontre e os utilitários de arquivo GNU, como cp , que fornece o parâmetro -t útil para esses casos.

Como funciona

O comando find inicia com $DIR (qualquer que seja a sua configuração), localiza todos os arquivos correspondentes à sua extensão (mas exclui qualquer coisa abaixo do diretório $TARGET ). Em seguida, ele passa todos os nomes de arquivos para o programa cp .

    
por 03.06.2015 / 22:39