What does "cp: omitting directory" mean?
Solution 1
By default, cp
copies only the direct files in, and not subdirectories in the directory. The message cp: omitting directory 'directory'
warns you that the mentioned directory is not copied.
To do so, specify the -r
(or --recursive
) option:
sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/
The manual page (command: man cp
) contains an overview of the available options.
Solution 2
The message means that cp
hasn't copied the directories listed. This is the default behaviour for cp
- only files are copied normally, regardless of if you are specifying them explicitely or using *
. If you want directories copying use the -r
switch which means "recursive".
Solution 3
Couple of things here which need to check:
Don't use
sudo
. You don't need it, you already have the permissions to write stuff in your own home directory.You can easily view hidden files and directories in the graphical file manager by selecting View/Show Hidden Files from the menu. Or by pressing Ctrl - H.
You need to use the
-R
option in thecp
command to copy a directory and it's contents./home isn't your home directory. /home/username is. So you are probably trying to copy from wrong place.
The shell is case sensitive, so ~/downloads and ~/Downloads are two different things.
Solution 4
When you are copying a directory like:
cp dir1 copy_of_dir1
You're only and exactly copying the dir1
itself and not the files within it, so at the end you will end up with a new directory structure while the structure does not exist.
In other words after it has been copied it will say that my contents is file1
, file2
, etc; However these files has not been copied and thus does not exist in it.
So to fix this issue that may came up cp
by default does not copy the directories and skips them unless you specify -r
option which copies all the files recursively too.
Solution 5
The reason it says omitting directory
is because cp
and all copy utilities, that I know of, create a list of files and sub-directories to be copied before starting to copy the files. When the --recursive
options is missing, sub-directories get bumped off this list. As such, omitting refers to removal from the copy list, not from your source media. I believe this addresses the meaning of the message.
Related videos on Youtube
MEM
Updated on September 18, 2022Comments
-
MEM almost 2 years
I've issued the following command:
sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/
When I do this, I start getting the following messages:
cp: omitting directory `Tag' cp: omitting directory `Test' cp: omitting directory `Text' cp: omitting directory `TimeSync' cp: omitting directory `Tool' cp: omitting directory `Translate' cp: omitting directory `Uri' cp: omitting directory `Validate'
and so on...
Why do I get these messages ?
-
MEM about 13 yearsThanks a lot. I thought that * will deal with it recursively somehow. But no. :D Thanks again. :)
-
Lekensteyn about 13 years@MEM: the
*
is expanded by Bash, not bycp
. Test it yourself by puttingecho
in front of your command. When expanded, it matches everything with a preceding...library/Zend/
(the files and directories in it). -
Bishwas Mishra over 6 yearsGood news is that
omitting directory 'directory'
doesn't mean that it is deleting that directory. -
jasinth premkumar over 6 years@Lekensteyn i was trying to copy contents of one user to another .so i gained permission from user with
chmod a+rx ~/
after i tried to copy withcp /home/2110/* /home/2111/
it produces error which states permission denied . where i was wrong . sorry to comment because i cant ask duplicate questions. i hope for quick reply :) -
Lekensteyn over 6 years@jasinthpremkumar Files in
/home/2110
are owned by user 2110 while files in/home/2111
are supposed to be owned by 2111. To set the owner, use something likesudo chown -R 2111 /home/2111
. -
thomasrutter almost 5 yearsNote: cp accepts either
-r
or-R
- I usually use-R
for recursive because there are some commands that only accept-R
for recursive.