Cosa significa "cp: omettere directory"?


408

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?

Risposte:


536

Per impostazione predefinita, cpcopia solo i file diretti e non le sottodirectory nella directory. Il messaggio cp: omitting directory 'directory'avverte che la directory menzionata non viene 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 del manuale (comando:) man cpcontiene una panoramica delle opzioni disponibili.


2
Molte grazie. Ho pensato che * in qualche modo lo affronterò ricorsivamente. Ma no. : D Grazie ancora. :)
MEM,

11
@MEM: il *è espanso da Bash, non da cp. Provalo tu stesso mettendo echo di fronte al tuo comando. Quando espanso, abbina tutto con un precedente ...library/Zend/(i file e le directory in esso).
Lekensteyn,

La buona notizia è che omitting directory 'directory'non significa che sta eliminando quella directory.
Bishwas Mishra il

@Lekensteyn stavo cercando di copiare i contenuti di un utente in un altro. Così ho ottenuto l'autorizzazione da parte dell'utente chmod a+rx ~/dopo che ho provato a copiare con cp /home/2110/* /home/2111/esso produce un errore che indica l'autorizzazione negata. dove mi sbagliavo. mi dispiace commentare perché non posso fare domande duplicate. spero in una rapida risposta :)
Jasinth Premkumar,

@jasinthpremkumar I file in /home/2110sono di proprietà dell'utente 2110 mentre i file in /home/2111sono di proprietà del 2111. Per impostare il proprietario, utilizzare qualcosa di simile sudo chown -R 2111 /home/2111.
Lekensteyn,

40

Il messaggio indica che cpnon ha copiato le directory elencate. Questo è il comportamento predefinito per cp: solo i file vengono copiati normalmente, indipendentemente dal fatto che vengano specificati o utilizzati in modo esplicito *. Se si desidera copiare le directory, utilizzare l' -ropzione che significa "ricorsivo".


16

Un paio di cose qui che devono controllare:

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

  2. È possibile visualizzare facilmente i file e le directory nascosti nel file manager grafico selezionando Visualizza / Mostra file nascosti dal menu. O premendo Ctrl- H.

  3. Devi usare l' -Ropzione nel cpcomando per copiare una directory e il suo contenuto.

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

  5. La shell fa distinzione tra maiuscole e minuscole, quindi ~ / download e ~ / Download sono due cose diverse.


2

Quando si copia una directory come:

cp dir1 copy_of_dir1

Stai solo copiando esattamente lo dir1stesso e non i file al suo interno, quindi alla fine finirai con una nuova struttura di directory mentre la struttura non esiste.

In altre parole, dopo che è stato copiato dirà che i miei contenuti è file1, file2ecc; Tuttavia, questi file non sono stati copiati e quindi non esistono in esso.

Quindi, per risolvere questo problema che potrebbe presentarsi cpper impostazione predefinita, non si copiano le directory e le si salta a meno che non si specifichi l' -ropzione che copia anche tutti i file in modo ricorsivo.


1

Il motivo che dice omitting directoryè perché cpe tutte le utilità di copia, che conosco, creano un elenco di file e sottodirectory da copiare prima di iniziare a copiare i file. Quando --recursivemancano le opzioni, le sottodirectory vengono eliminate da questo elenco. Pertanto, omettere si riferisce alla rimozione dall'elenco delle copie, non dal supporto di origine. Credo che questo affronti il ​​significato del messaggio.


0

Il comando cp viene utilizzato per copiare file e directory, non le directory nidificate, se si desidera copiare le directory di nidificazione, è possibile aggiungere -r dopo, dove -r significa ricorsivo.

Sintassi che puoi seguire (in esecuzione come root):

cp -r /source/dir/* /destination/ 

o

cp --recursive /source/dir/* /destination/

0

ometterà le sottodirectory in prima istanza se non si utilizza il flag -r che esegue la copia ricorsiva.

cp -r destinazione sorgente

-r digli di fare ricorsivamente. Significato per copiare tutto ciò che è nelle cartelle ecc.


1
Questa risposta è un duplicato di questa risposta esistente: askubuntu.com/a/1165846
karel

-1

Supponiamo di avere due directory "Tag" e "Test"

Se si desidera copiare la directory 'Tag' nella directory 'Test' utilizzare il comando

$ : cp -r Tag Test (case sensitive)

Per lo più il problema verrà risolto con il codice sopra in caso contrario e si ottiene sotto il messaggio come

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.