Eu tenho medo cpio
realmente não pode fazer isso, a menos que você faça algum script extra para detectar o nome do diretório e percorra-o para extrair os nomes de caminho de todos os arquivos abaixo dele, como forma de "pré-processamento "seu arquivo de lista.
Seria muito mais fácil usar outra ferramenta, como rsync
(observe o extra -r
após --files-from
!):
rsync -a --files-from=my-files-to-copy.txt -r my/source/dir my/dest/dir
... ou pax
( utilitário padrão ):
( cd my/source/dir && pax -w ) <my-files-to-copy.txt |
( cd my/dest/dir && pax -r )
... ou com pax
se você puder fornecer um caminho absoluto para o diretório de destino:
( cd my/source/dir && pax -rw /my/dest/dir ) <my-files-to-copy.txt
... ou BSD tar
(use -T
ou --files-from=
em vez de -I
com GNU tar
):
tar -c -f - -C my/source/dir -I my-files-to-copy.txt |
tar -x -f - -C my/dest/dir
Isso tudo assume que my-files-to-copy.txt
reside no diretório atual e que esse diretório pode ser diferente do diretório my/source/dir
.