Che cosa significa "cp: omitting directory"?

361

Ho emesso il seguente comando:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Quando lo faccio, comincio a ricevere i seguenti messaggi:

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' 

e così via ...

Perché ricevo questi messaggi?

    
posta MEM 18.04.2011 - 17:11
fonte

6 risposte

469

Per impostazione predefinita, cp copia solo i file diretti in e non le sottodirectory nella directory. Il messaggio cp: omitting directory 'directory' ti avverte che la directory menzionata non è stata copiata.

Per fare ciò, specifica l'opzione -r (o --recursive ):

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

La pagina di manuale (comando: man cp ) contiene una panoramica delle opzioni disponibili.

    
risposta data Lekensteyn 18.04.2011 - 17:15
fonte
33

Il messaggio indica che cp non ha copiato le directory elencate. Questo è il comportamento predefinito per cp - solo i file vengono copiati normalmente, indipendentemente dal fatto che vengano specificati esplicitamente o utilizzando * . Se vuoi copiare le directory usa l'interruttore -r che significa "ricorsivo".

    
risposta data Roger Light 18.04.2011 - 17:15
fonte
13

Un paio di cose qui che è necessario controllare:

  1. Non utilizzare sudo . Non ne hai bisogno, hai già i permessi per scrivere cose nella tua home directory.

  2. Puoi facilmente visualizzare i file e le directory nascosti nel gestore file grafico selezionando Visualizza / Mostra file nascosti dal menu. Oppure premendo Ctrl - H .

  3. È necessario utilizzare l'opzione -R nel comando cp per copiare una directory e il suo contenuto.

  4. / home non è la tua directory home. / home / nome utente è. Quindi probabilmente stai provando a copiare dal posto sbagliato.

  5. La shell è case sensitive, quindi ~ / downloads e ~ / Download sono due cose diverse.

risposta data Nikunj K. 04.10.2013 - 09:02
fonte
1

Quando copi una directory come:

cp dir1 copy_of_dir1

Stai solo ed esattamente copiando il dir1 stesso e non i file al suo interno, quindi alla fine ti ritroverai con una nuova struttura di directory mentre la struttura non esiste.

In altre parole, dopo che è stato copiato, dirà che il mio contenuto è file1 , file2 , ecc; Tuttavia questi file non sono stati copiati e quindi non esistono in esso.

Quindi, per risolvere questo problema che potrebbe essere visualizzato cp per impostazione predefinita, non copia le directory e le salta a meno che non si specifichi l'opzione -r che copia anche tutti i file in modo ricorsivo.

    
risposta data Ravexina 03.07.2017 - 09:47
fonte
0

Il motivo per cui omitting directory è dovuto al fatto che cp e tutte le utilità di copia, che conosco, creano un elenco di file e sottodirectory da copiare prima di iniziare a copiare i file. Quando mancano le opzioni --recursive , le sottodirectory vengono cancellate da questo elenco. In quanto tale, omettere si riferisce alla rimozione dall'elenco di copie, non dal supporto di origine. Credo che questo indirizzi il significato del messaggio.

    
risposta data endrias 24.07.2017 - 10:32
fonte
-2

Supponi di avere due tag "Tag" e amp; 'Test'

Se vuoi copiare la cartella "Tag" in "Test", usa il comando

$ : cp -r Tag Test (case sensitive)

Per lo più il problema verrà risolto con il codice sopra se non lo è e riceverai un messaggio simile a

cp: omitting directory 'Tag' 
cp: omitting directory 'Test'

quindi aggiungi alcuni file nella directory 'Tag' e poi copialo in 'Test'. In realtà ho lo stesso problema, ma ho risolto come ho detto in secondo luogo.

    
risposta data jainmiah shaik 03.07.2017 - 09:14
fonte

Leggi altre domande sui tag