Quando uso
cp -R inputFolder outputFolder
il risultato dipende dal contesto :
- se
outputFoldernon esiste, verrà creato e sarà il percorso della cartella clonataoutputFolder. - se
outputFolderesiste, allora sarà il clone creatooutputFolder/inputFolder
Questo è orribile , perché voglio creare qualche script di installazione, e se l'utente esegue due volte per errore, avrà outputFoldercreato la prima volta, poi la seconda manche tutte le cose sarà creato ancora una volta outputFolder/inputFolder.
- Voglio sempre il primo comportamento: creare un clone accanto all'originale (come un fratello).
- Voglio usare
cpper essere portatile (es. MINGW non è statorsyncspedito) - Ho controllato
cp -R --parentsma questo ricrea il percorso fino all'albero della directory (quindi il clone non saràoutputFoldermasome/path/outputFolder) --remove-destinationo--updatenel caso in cui 2 non cambi nulla, vengono comunque copiate le coseoutputFolder/inputFolder
C'è un modo per farlo senza prima verificare l'esistenza del outputFolder(se la cartella non esiste quindi ...) o usare rm -rf outputFolder?
Qual è il modo UNIX concordato e portatile per farlo?
rsync?
cp, il piping tra due tarcomandi è un modo affidabile e affidabile per copiare gli alberi.
rsyncspedito.
tar -C input -cf - . | tar -C output -xf -funziona. -Ccambia la directory di lavoro, ma non è un'opzione standard, quindi se non è supportato è necessario eseguire le due tar nelle directory di lavoro giuste per iniziare, ad es. ( cd input && tar -cf - . ) | ( cd output && tar -xf - )Tuttavia, se si ha a che fare con Windows, utilizzarei solo la risposta di roaima.
mvdi spostare una raccolta di file in una singola normale?