J'essaie de créer un script qui peut compresser des fichiers avec une certaine extension dans un certain nombre de répertoires en une seule tar-ball. Actuellement, ce que j'ai dans le fichier script est:
find "$rootDir" -name '*doc' -exec tar rvf docs.tar {} \;
Où $rootDir
est le chemin de base pour rechercher.
C'est très bien sauf que les chemins sont absolus dans le fichier tar. Je préférerais que les chemins soient relatifs $rootDir
. Comment pourrais-je procéder?
Exemple de courant tar -tf docs.tar
où $rootDir
est /home/username/test
sorti:
home/username/test/subdir/test.doc
home/username/test/second.doc
Ce que je souhaite que la sortie soit:
./subdir/test.doc
./second.doc
cd $rootDir
etcd -
(au moins dansbash
).( cd $rootDir ; find ... )
serait également possible, c'est-à-dire tout faire en sous-couche.Vous pouvez utiliser le
%P
format dans la-printf
directive:s'affichera dans votre exemple:
Vous pouvez ensuite utiliser cette
find
liste dans unefor
expression, afin d'exécuter notre commande exec, comme dans:la source