Estas são minhas suposições:
Estrutura do arquivo no local original:
..
├── app
│ ├── code
│ ├── design
│ ├── etc
│ └── locale
│ └── ...
├── script.d
│ ├── file.list
│ ├── script.sh
└── skin
└── frontend
└── ...
file.list é o nome do arquivo que contém a lista de arquivos a serem copiados. script.sh é o seguinte script.
#! /bin/bash
distDir="THE NEW DIRECTORY PATH" # <<<<<< Alter this line
for filePath in $(cat "file.list");
do
len=$(wc -c "$filePath")
newFilePath=$(cut -c4-$len "$filePath")
tempFileName=$(grep -Po '[^/]+$' "$filePath")
path=$(grep -Po '^.*/' "$newFilePath")
newPath=$distDir
for dir in $(echo "$path" | tr / '\n');
do
if [ $(ls "$newPath" | grep -P '^'$dir'$' | wc -l) = 0 ]
then
mkdir "$newPath"'/'"$dir"
newPath="$newPath"'/'"$dir"
fi
done
cp "$filePath" "$newPath"'/'
done
Apenas certifique-se de fornecer o caminho correto na primeira linha.