0

I have the following function inside a BASH script (running under Ubuntu 12.x), which would copy over a file with spaces inside the file name. It's not working. I've tried many different combinations, with "', with \", etc. How do I get this to work? Thanks!

function copy_docs()
{
    source_directory=/mnt/someplace
    release_directory=/doc/someotherplace

    cp ${source_directory}/"Some file with spaces.txt" ${release_directory}/

}

This is what I'm getting as output (from nearly all permutations):

cp: cannot stat `/mnt/someplace/some': No such file or directory
cp: cannot stat `file': No such file or directory
cp: cannot stat `with': No such file or directory
cp: cannot stat `spaces': No such file or directory
countermode
  • 7,533
  • 5
  • 31
  • 58
  • Try cp ${source_directory}/"Some\ file\ with\ spaces.txt" ${release_directory}/ – Ramesh Aug 19 '14 at 17:49
  • Do either of your directories have spaces in their names? – Ian D. Scott Aug 19 '14 at 17:58
  • That did not work.

    It separates the file into 4 different files, attempting to copy four files (i.e. "Some", "file", "with", "spaces").

    – Chris Galas Aug 19 '14 at 17:58
  • I don't see why that should not work. Try running it like this, and post your results: set -x; copy_docs; set +x – glenn jackman Aug 19 '14 at 18:14
  • 1
    Your output cp: cannot stat /mnt/someplace/some: No such file or directory does not match the file name in your cp statement. "Some file with spaces.txt" is not the same as "some file with spaces.txt" which is what your output suggests you are attempting to copy. – Timothy Martin Aug 19 '14 at 18:43
  • Since you haven't given consistent data that would tell us what you're doing, I'm closing this question as a duplicate of our generic question on handling file names with spaces (it was that or “unclear what you're asking”). Read that thread. If you still don't understand why your attempt doesn't work, we can reopen this question, but you must tell us what you're actually doing. Copy-paste your code, the way you invoke is, and the error message. – Gilles 'SO- stop being evil' Aug 19 '14 at 23:06

1 Answers1

2
cp ${source_directory}/Some\ file\ with\ spaces.txt ${release_directory}/

or

cp ${source_directory}/'Some file with spaces.txt' ${release_directory}/
jimmij
  • 47,140