> OK, first off, I'm on Win32 (XP) using 5.3 of coreutils. > > I have been knocking my head on this and I'm feeling *really* stupid. > I swear, I'm unix literate, but I can't seem to get the following to > work without cheating: > > cp -uvp "c:\dir with space\long path\*" k:\path
>From context, it appears you are using a Windows shell and not bash (in bash >double quotes, you have to spell it c:\\dir, not c:\dir, since \ is an escape >character). Are you using cygwin, or some other coreutils compilation? Since >the Windows shell is not POSIX compliant, you may get more help with proper >Windows shell quoting by asking on the mailing list of your coreutils provider >(if it is cygwin, try cygwin <at> cygwin.com). Meanwhile, read up on shell quoting - filename globbing is suppressed by quoting. So "*", \*, and '*' all mean a literal *, while * outside of quotes gets expanded into a file list. Your attempt quoted the *, so it was passing a literal * as the single filename argument to cp (and the file named * did not exist), rather than a list of filenames. The following two approaches work in cygwin and both do what you appear to be wanting (bonus: cygwin uses unix-style paths, rather than the problematic backslashes, so you don't have to worry about whether it should be "c:\dir" or "c:\\dir" depending on Windows vs. bash shell): cp -uvp '/cygdrive/dir with space/long path'/* /cygdrive/k/path cp -uvp /cygdrive/c/dir\ with\ space/long\ path/* /cygdrive/k/path -- Eric Blake _______________________________________________ Bug-coreutils mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-coreutils
