views:

60

answers:

3

Hey, not 100% sure what this error means.

% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* not found

The purpose is to copy all the files into a folder into a backup folder and rename the files to backup.

+2  A: 

The * shouldn't be in quotes:

for f in * ; do cp $f ../backup/$f ; done

When you use quotes this prevents the shell from expanding it, so it is looking for a file called *, not all files in the directory which is what you meant.

Mark Byers
+7  A: 

You are quoting the wrong things: quote the variables, not the wildcards!

% for f in *; do cp "$f" "../backup/$f" ; done

BTW, in this case, you can simply do:

% cp * ../backup/

janmoesen
+1 Good advice.
Mark Byers
+1  A: 

Or may be this:

cp -b * ../backup 

If you want them to be renamed:

% for f in * ; do cp "$f" "../backup/${f}-backup" ; done
Neeraj