Copie o arquivo e estrutura de arquivos e mescle no novo diretório

2

Eu usei a seguinte linha de comando

find src -name '*.json' | cpio -pdm lib

Então ele encontrou o arquivo json como no sceenshot abaixo

Mas,emseguida,elepegatodaaestruturadediretórioeacolocanapastalib:

O que estou querendo é que o arquivo e sua estrutura de arquivos de diretórios (src - > server - > data - > diceware.json) sejam mesclados na nova pasta (lib - > server - & gt ; data - & dt; diceware.json)

Talvez alguém possa ajudar

    
por AndyW 18.09.2015 / 15:08

2 respostas

2

Isso acontece porque find imprime o caminho completo de sua localização atual (ou seja, incluindo src ). Você precisa desmembrar o primeiro componente de caminho ou avançar para a estrutura de diretórios para evitar isso.

cd src && find . -name '*.json' -print0 | cpio -0pdm ../lib
    
por 18.09.2015 / 15:16
0

Você poderia fazer algo assim:

find . -name '*json' | 
    while IFS= read -r file; do 
        mkdir -p lib/$(dirname "$file"); 
        cp "$file" lib/"$(dirname "$file")"
done

Ou, se os nomes dos seus arquivos puderem conter novas linhas:

find . -name '*json' -print0 | 
    while IFS= read -d '' -r file; do 
        mkdir -p lib/$(dirname "$file"); 
        cp "$file" lib/"$(dirname "$file")"
done
    
por 18.09.2015 / 15:21

Tags