Eu tenho um diretório contendo muitos subdiretórios semelhantes. Cada um desses subdiretórios contém alguns arquivos nos quais estou interessado e outros nos quais não estou.
Eu quero copiar:
DE: dois arquivos específicos: arquivo1.txt arquivo2.json de cada subdiretório
PARA: um local diferente
Mas criar os subdiretórios naquele local
Por exemplo se eu tiver
base
|_folder_00000001
| |_-file1.txt
| |_ file2.json
| |_some_other_things_I_dont_need
| |_some_other_folder_I_dont_need
|
|_folder_00000002
| |_-file1.txt
| |_ file2.json
| |_some_other_things_I_dont_need
| |_some_other_folder_I_dont_need
|
|_folder_00000003
| |_-file1.txt
| |_ file2.json
| |_some_other_things_I_dont_need
| |_some_other_folder_I_dont_need
|
|_folder_00000004
| |_-file1.txt
| |_ file2.json
| |_some_other_things_I_dont_need
| |_some_other_folder_I_dont_need
|
Quero copiar isso para outro local, mas excluindo "algumas outras coisas e pastas que não preciso"
target
|_folder_00000001
| |_-file1.txt
| |_ file2.json
|
|
|_folder_00000002
| |_-file1.txt
| |_ file2.json
| |
|_folder_00000003
| |_-file1.txt
| |_ file2.json
| |
|_folder_00000004
| |_-file1.txt
| |_ file2.json
|
Como posso fazer isso no terminal bash?
Responder1
Você pode usar cp
com --parents
:
cd base
cp -v --parents */file1.txt */file2.json ../target/
Responder2
Existe algum padrão para os arquivos que você deseja copiar?
A partir do exemplo, se considerarmos "-file1.txt" e "file2.json" como os arquivos que você deseja copiar para a nova estrutura de diretórios, isso pode ser feito desta forma, devo pensar:
rsync -av --include="*/" --include="*-file1.txt" --include="*file2.json" --exclude="*" /src/dir/ /dest/dir/
Espero que isso ajude.