Tag Info

Hot answers tagged

73

Lets say you created the new folder (or are going to create one) and want to copy the files to it after the folder is created mkdir /home/<new_user> cp -r /etc/skel/. /home/<new_user> This will copy all files/folder recursively from /etc/skel in to the already existing folder created on the first line.


63

cp --preserve=links From the man page: --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,owner- ship,timestamps), if possible additional attributes: context, links, xattr, all Personally, I use cp -av for most of my heavy copying. That way, I can preserve everything - even recursively - ...


53

Don't specify the files: cp -r /etc/skel /home/user (Note that /home/user must not exist already, or else it will create /home/user/skel.)


36

You can use find and cpio to do this cd /top/level/to/copy find . -name '*.txt' | cpio -pdm /path/to/destdir (-updm for overwrite destination content.)


23

This isn't really programming related, but you can use scp to do this. scp file.zip remote-box-name:/path/to/destination/file.zip If your username is different on the remote box, you will need to prefix it: scp file.zip yourusername@remotebox:/path/to/destination/file.zip And to retrieve a file you could do this: scp ...


17

"." refers to the current directory, so cp /path/to/file . will do what you want.


15

bash itself has a good solution, it has a shell option, You can cp, mv and so on.: shopt -s dotglob # for considering dot files (turn on dot files) and shopt -u dotglob # for don't considering dot files (turn off dot files) above solution standards of bash NOTE: shopt # without argument show status of all shell options -u # abbrivation of unset -s # ...


14

If the links contain relative paths, then, copying the link will not adjust the relative path. Use readlink, with the switch -f to follow recursively, in order to get the absolute path of the link. For example: ln -s $(readlink -f old/dir/oldlink) new/dir/newlink If preserving the relative paths is what you want, than the option -P of cp, as said by ...


14

Try using xargs: cat list.txt | xargs -J % cp % new_folder Update: I did this on OS X which has an different version than GNU/Linux versions. The xargs which comes from GNU findutils doesn't have -J but it has -I which is similar (as Dennis Williamson pointed out in a comment). The OS X version of xargs has both -I and -J which have slightly different ...


13

No need for cat at all: xargs -a list.txt cp -t new_folder Or using long options: xargs --arg-file=list.txt cp --target-directory=new_folder Here are some shell versions: Bash: for file in $(<list.txt); do cp "$file" new_folder; done or cp $(<list.txt) new_folder sh (or Bash): # still no cat! while read -r line; do for file in $line; do ...


13

cp -Lr /usr/share/solr/ ~/solrTest Check the man page for unix commands with man cp -L, --dereference always follow symbolic links in SOURCE


13

Use brace expansion cp /home/myuser/really/big/file/here/and/there.png{,.bkp}


10

mkdir ~/MyAssignments/MyWorks


10

One significant difference is that cp truncates the destination file and starts copying data from the source into the destination file. install, on the other hand, removes the destination file first. This is significant because if the destination file is already in use, bad things could happen to whomever is using that file in case you cp a new file on top ...


10

Just as the man page says, use -P.


10

This would be significantly easier using rsync with its --exclude switch. rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest The -v switch will provide verbose output on which files are being synchronised.


9

Based on post by Gilles I tested the following list: #!/bin/sh touch questionmark? touch less< touch less\< touch more\> touch backslash\\ touch colon: touch asterisk\* touch pipe\| touch inch\" touch carret\^ touch comma, touch semicolon\; touch plus+ touch equals= touch lbracket[ touch rbracket] touch quote\' I tried to copy that onto Android ...


9

You can use rsync to do this, the command I use is rsync -tr "folder to copy from" "folder to copy to" e.g. rsync -tr /home/me/stuff/* /home/me/otherstuff/


9

It is also possible to do this with good old cp: Thanks to srcspider for reminding me to use -T! cp -ruT old-dir new-dir


8

On machine A, open two terminal windows On machine A, ssh to machine B. Look around, find the path on machine B to the file you wish to copy On machine A, the second terminal window type: scp yourusername@remotebox:/path/to/destination/file.zip /home/me/Desktop The file should be copied from machine B to machine A, in to the /home/me/Desktop folder (if ...


8

I don't get a prompt to overwrite. Why not? Because you're supposed to know what you're doing. Especially as root, you can overwrite pretty much anything, so pay attention to that. Use the -i option for cp to get a prompt before overwriting existing files. If you always want to be reminded of this, consider creating an alias for cp to cp -i. The ...


8

No. The cp command does not possess the capability to process any of its arguments as regular expressions. Even wildcards are not handled by it (or most executables); rather they are handled by the shell. cp test/* test2/ is actually expanded by bash, and all that cp really sees for its arguments are cp test/file1 test/file2 test/file3 test2/ (or whatever ...


7

In addition to calling /bin/cp, you could do one of: \cp -f ... command cp -f ... However, I agree that you should not get accustomed to using an alias like cp -i or rm -i -- if you sit down at a different shell, you won't have the safety net you've become dependent on.


7

It is easy enough to install cp from MacPorts, however, if you don't want to, or want to create a portable script, then you have three options: rsync rsync --archive --link-dest=../yesterdays_backup backups/yesterdays_backup\ backups/todays_backup cpio mkdir backups/todays_backup cd backups/yesterdays_backup find . -print | cpio -p -al ...


7

The usual suspects when you want complex copies or renames are GNU cp, zmv from zsh, rsync and pax (or cpio). There's no rename feature in cp, nor (I think) in rsync. While zmv can rename, this doesn't mesh well with recursive copies. But pax can do it: cd /ext3 pax -rw -s '/[*?:]/_/gp' stuff /fat32/partition This changes each *?: to _. Warning: minimally ...


7

Written the script to use find, cpio and pv to accomplish the task. The rate can be limited. http://vi-server.org/vi/bin/cppv Mirroring it here: #!/bin/bash set -e if [ $# -lt 2 ]; then echo "cppv - copy files with progress bar and rate limiting ability" echo "Usage: cppv source_file[s] destination_file_or_directory" echo "No other ...


6

I used the following to duplicate a really large directory. All symbolic links were preserved, the copy was done recursively and I was able to have some visual feedback of the process: cp -Prv /sourcer_dir/* /target_dir


6

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to You might want (or not) to use --del as well. Check the manual page.


6

Your bottleneck is hard-drive speed. Multi-core can't speed this up.


5

Have you tried this? cp cp*[24680].enc destination



Only top voted, non community-wiki answers of a minimum length are eligible