From b587adda1fba778ffd9a68a00798dea787ba1dc5 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Mon, 30 Jan 2006 21:52:17 +0000 Subject: [PATCH] This perl script automates the conversion of a list of pathnames to a set of includes/excludes needed for rsync to copy just the listed files. --- support/files-to-excludes | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 support/files-to-excludes diff --git a/support/files-to-excludes b/support/files-to-excludes new file mode 100755 index 00000000..5fb13b08 --- /dev/null +++ b/support/files-to-excludes @@ -0,0 +1,27 @@ +#!/usr/bin/perl +# This script takes an input of filenames and outputs a set of +# include/exclude directives that can be used by rsync to copy +# just the indicated files using an --exclude-from=FILE option. +use strict; + +my %hash; + +while (<>) { + chomp; + s#^/+##; + my $path = '/'; + while (m#([^/]+/)/*#g) { + $path .= $1; + print "+ $path\n" unless $hash{$path}++; + } + if (m#([^/]+)$#) { + print "+ $path$1\n"; + } else { + delete $hash{$path}; + } +} + +foreach (sort keys %hash) { + print "- $_*\n"; +} +print "- /*\n"; -- 2.34.1