2009-05-15 16 views
23

mio elenco vecchi e nuovi hanno stesse cartelle e file all'interno.Linux comando per spostare una directory

cerco:

mv -if old/* new/* 

e ottenere errore

mv: non possono muoversi `./xxxxxx' a una sottodirectory di sé

Come posso spostarlo?

+10

Questo è una domanda perfettamente valida che appartiene a StackOverflow. Certo, è un errore ingenuo - ma questo è ciò che SO è per; aiuta le persone a superare l'ingenuità permettendo loro di fare domande e imparare dalle risposte. Vedi SO Blog e Podcast n. 53 (Joel dice che nessuna domanda è troppo semplice per Stack Overflow ...). –

+0

Ma non è una domanda di programmazione. Non appartiene a ServerFault? –

+0

ServerFault è ancora nella versione beta privata! – alamar

risposta

29

Si dovrebbe usare mv -if old/* new/ senza il finale *.

Questo perché srotolato per

mv -if old/foo old/bar old/baz new/foo new/bar new/baz 

cioè spostare tutto in un nuovo/baz

Questo non è quello che volevi.

+0

Ho fatto un errore scritto. mv -if vecchio/* nuovo/ non funziona – Qooe

+2

'Non lavoro' è inutile. Cosa dice? Che cosa succede quando ci provi? – alamar

5
[email protected]:/tmp/experiment$ ls a 
11 22 33 
[email protected]:/tmp/experiment$ ls b 
22 33 
[email protected]:/tmp/experiment$ ls 
a b 
[email protected]:/tmp/experiment$ mv a/* b 
[email protected]:/tmp/experiment$ ls a 
[email protected]:/tmp/experiment$ ls b 
11 22 33 

Funziona. Cosa stai cercando di ottenere? Potresti scrivere un breve esempio di come dovrebbero apparire i dati di input e quali dovrebbero essere i dati di output? La verità è che non ho idea di cosa stai cercando di fare :) Aiutami ad aiutarti.

1

Se si copia da un file system ext2/3/4 in un file system FAT32 e un nome file ha un carattere non valido per le convenzioni di denominazione FAT32, si ottiene questo messaggio di errore terribilmente fastidioso e errato. Come lo so? Ho lottato con questo bug - sì, è un KERNEL BUG - per 6 ore prima che mi venisse in mente. Ho pensato che si trattasse di un errore interprete shell, ho pensato che fosse un errore "mv" - Ho provato più shell differenti, tutto. Provate questo esperimento: su un file ext sistema "touch 'a: b'" loro in un file system FAT32 "mv". Provalo, ti piacerà (odio) i risultati. Lo stesso vale per il '<' e '>' (\ 074 e \ 076).

Grazie per "man mv" - questo è un grande aiuto, non lasciare il tuo lavoro di giorno.

1

potrebbe essere che hai la risposta ma soprattutto risposta non sta lavorando per me .... e, infine, un sacco di ricerche ho avuto la risposta. (Issue è a causa di file-proprietà)
e appena messo sudo prima del comando e il suo funzionamento .... :) Stessa cosa per cp e comando mv.

sudo mv -if old/* new/ 
2

nota che mv a/* b/non spostare i file * (nome del file inizia con '') in un/ab/

es:.

$ mkdir -p a/d b && touch a/f a/.f a/d/.f 
$ mv a/* b/ 
$ ls -a a/ 
. .. .f 
Problemi correlati