Ik ben een shell script aan het maken (zie ook linkje) maar ik krijg het nu niet voor elkaar om find de juiste -path parameters geven.
Je kan in een string paden zetten die niet gekopieerd moeten worden. Omdat cp daar geen voorziening voor heeft wil ik find gebruiken.
Dit werkt als ik het zelf uitvoer, maar via een script kan ik alleen het volgende werkend krijgen:
Blijkbaar wordt de slash / niet zo leuk gevonden.
Om de string voor de excludes te maken doe ik het volgende:
$EXCLUDE_COPY is als volgt gedefineerd:
Heeft iemand een idee hoe ik dat kan oplossen? Ik moet denk ik nog wat escapen, maar weet niet hoe. Ik heb al " \" en ' geprobeerd om het path te omhullen, maar dat mocht niet baten. Terwijl het handmatig op de cli wel lukt.
Je kan in een string paden zetten die niet gekopieerd moeten worden. Omdat cp daar geen voorziening voor heeft wil ik find gebruiken.
code:
1
| find src-dir ! -path "src-dir/pad/*" -exec cp -a {} dest-dir \; |
Dit werkt als ik het zelf uitvoer, maar via een script kan ik alleen het volgende werkend krijgen:
code:
1
| find src-dir ! -path "*pad*" -exec cp -a {} dest-dir \; |
Blijkbaar wordt de slash / niet zo leuk gevonden.
Om de string voor de excludes te maken doe ik het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
| i=0
for arg in $EXCLUDE_COPY;
do
if [ $i -gt 0 ];
then
EXCLUDE_COPY_PATH_STRING="${EXCLUDE_COPY_PATH_STRING} -a ! -path \"$SRC${arg}\""
else
EXCLUDE_COPY_PATH_STRING=" -path \"$SRC${arg}\""
let "i+=1"
fi
done |
$EXCLUDE_COPY is als volgt gedefineerd:
code:
1
2
3
| EXCLUDE_COPY="data/*" of meerdere EXCLUDE_COPY="data/* data2/* data3/*" |
Heeft iemand een idee hoe ik dat kan oplossen? Ik moet denk ik nog wat escapen, maar weet niet hoe. Ik heb al " \" en ' geprobeerd om het path te omhullen, maar dat mocht niet baten. Terwijl het handmatig op de cli wel lukt.