Eu tenho muitas pastas diferentes com pdf
arquivos e outras extensões. Desejo copiar todos os pdf
arquivos para outro destino. Mas se eu fizer isso com find assim:
"${SEARCHDIR}" -iname "*.pdf" | xargs -d "\n" -I {} cp -r --backup=t {} "${OUTPUTFOLDER}/"
Recebo todos os pdf
arquivos em um único destino e isso é muito confuso para mim. Por esse motivo, desejo copiar os arquivos correspondentes, incluindo o diretório pai, mas SEM os arquivos não correspondentes nesse diretório.
Entrada:
user/search/test/sub
user/search/test/sub2
user/search/test/file.pdf
user/search/test/file.doc
user/search/test2/sub
user/search/test2/sub2/file2.pdf
user/search/test2/file3.pdf
user/search/test2/file.doc
Deve ser copiado como
/destination/test/file.pdf
/destination/sub2/file2.pdf
/destination/test2/file3.pdf
EDIT: não quero copiar todo o caminho. Eu não quero que minha saída seja assim:
/destination/test/file.pdf
/destination/test2/sub2/file2.pdf
/destination/test2/file3.pdf
Como fazer isso?
Em
zsh
, você poderia fazer:Onde
${file:t2}
você obtém a cauda de dois componentes do arquivo, ou seja, o nome do arquivo e o de seu diretório pai. Em seguida, criamos oh
cabeçalho desse caminho como um diretório e copiamos o arquivo para lá.