delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/06/03/17:46:39

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <F76C9B2DA2FC4C4CA0A18E288BBCBCF7082179D4@nihexchange24.nih.gov>
From: "Buchbinder, Barry (NIH/NIAID)" <BBuchbinder AT niaid DOT nih DOT gov>
To: cygwin AT cygwin DOT com
Subject: RE: Problem with spaces embedded in filenames
Date: Thu, 3 Jun 2004 17:46:04 -0400
MIME-Version: 1.0
X-IsSubscribed: yes

I've always had problems getting the correct number of backslashes.  Try
quotes.  For example, change sed to

	sed -e 's/^.*$/"&"/'

to give

	"path/file"

If that doesn't work, try doubling them 

	sed -e 's/^.*$/"&"/' -e "s/^.*$/'&'/"

to give

	'"path/file"'

You might need to change which quotes are on the inside/outside.

If that isn't enough protection, feed the quoted file names into a file and
then use

	... `cat file`

Alternatively, you could check the tar documentation to see if it can take
the file list from a file or standard input.  Or it might even be able to do
the date selection for you instead of using find -- that should avoid
quoting problems.

-----Original Message-----
From: Will Senn
Sent: Thursday, June 03, 2004 5:04 PM
To: cygwin AT cygwin DOT com
Subject: Problem with spaces embedded in filenames

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Hi,

I am doing backups with tar on XP. I thought that I could touch a file
when I did a full backup and then use find with newer to only back up
files that are newer than the touched file:

~    touch /cygdrive/i/backups/full_backup
~    find /cygdrive/d/sandbox -newer /cygdrive/i/backups/full_backup !
~    -type d -print | sed -e "s/\ /\\\\ /g"`

this command produces the following list of files:

~    /cygdrive/d/sandbox/another\ test.txt
~    /cygdrive/d/sandbox/test.txt

'another test.txt' is a file with an embedded space (I figured I
needed to escape the space, hence the sed)

The problem is this, when I use the output of this command as the
input of another it complains. ie.

~    $ ls -l `find /cygdrive/d/sandbox -newer
~    /cygdrive/i/backups/_sandbox.full ! -type d -print | sed -e "s/\
~    /\\\\ /g"`

~    ls: /cygdrive/d/sandbox/another: No such file or directory
~    -rwx------+   1 wsenn    None            0 Jun  3 14:45
~    /cygdrive/d/sandbox/test.txt
~    -rw-r--r--    1 wsenn    None           69 Jun  3 15:26 test.txt

Any help would be appreciated. Here's the tar command I planned on using:

~    tar czf /cygdrive/i/${TODAY}_I_sandbox.tgz `find
~    /cygdrive/d/sandbox -newer /cygdrive/i/backups/full_backup ! -type
~    d -print | sed -e s/\ /\\\\\ /g`

Later,

Will
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
 
iD8DBQFAv5IjBvT4ZqqGK0sRAqHTAJ9Jq0U+GX0EtEU8lM8vUkv4xwbMUQCdFvtU
n2DkKcAkUkMrtDPOJzuwgOQ=
=4iEV
-----END PGP SIGNATURE-----

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019