Date: Fri, 2 Aug 2002 23:59:48 +0100 From: Matthew Seaman <m.seaman@infracaninophile.co.uk> To: Pascal Giannakakis <capm@gmx.net> Cc: freebsd-questions@FreeBSD.ORG Subject: Re: smart file gobbling: exclude one file from list Message-ID: <20020802225948.GC54353@happy-idiot-talk.infracaninophi> In-Reply-To: <001201c23a6e$17e78e60$0200a8c0@capm> References: <001201c23a6e$17e78e60$0200a8c0@capm>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 02, 2002 at 11:46:43PM +0200, Pascal Giannakakis wrote:
> if i do "cp * /destination", all files in the current directory will be
> copied to /destination. What do i have to type, if i want to expand the '*'
> to all files, except of one? For example, if i wanted to exclude the file
> "notme" in the current directory?
>
> I know i could hack it with grep, but this fails as all files are on one
> line. I wonder how you gurus would solve this! :)
i)
mv notme /tmp
cp * /destination
mv /tmp/notme .
ii)
for f in * ; do
[ "$f" = "notme" ] || cp $f /destination
done
iii)
find . \! -name notme -maxdepth 1 -mindepth 1 -print0 | \
xargs -0 -J % cp % /destination
iv)
cp `ls -1d * | sed -e '/notme/d'` /destination
v)
perl -MFile::Copy \
-e 'for (@ARGV) { next if /notme/; copy $_, "/destination/$_"; }' *
vi)
tar -cf - --exclude=notme . | ( cd /destination ; tar -xf - )
vii)
zsh -c "setopt EXTENDED_GLOB ; cp (^(notme)) /destination"
zsh is in ports -- shells/zsh -- all the rest are commands from the
core system.
Cheers,
Matthew
--
Dr Matthew J Seaman MA, D.Phil. 26 The Paddocks
Savill Way
Tel: +44 1628 476614 Marlow
Fax: +44 0870 0522645 Bucks., SL7 1TH UK
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020802225948.GC54353>
