Kiedy używam
cp -R inputFolder outputFolder
wynik zależy od kontekstu :
- jeśli
outputFoldernie istnieje, zostanie utworzony, a ścieżka sklonowanego folderu będzieoutputFolder. - jeśli
outputFolderistnieje, utworzony zostanie klonoutputFolder/inputFolder
To okropne , ponieważ chcę utworzyć skrypt instalacyjny, a jeśli użytkownik uruchomi go dwa razy przez pomyłkę, utworzy go outputFolderza pierwszym razem, a następnie przy drugim uruchomieniu wszystkie elementy zostaną utworzone ponownie outputFolder/inputFolder.
- Chcę zawsze pierwszego zachowania: utwórz klon obok oryginału (jako rodzeństwo).
- Chcę
cpbyć przenośny (np. MINGW nie zostałrsyncwysłany) - Sprawdziłem,
cp -R --parentsale to odtwarza ścieżkę w górę drzewa katalogów (więc klon nie będzie,outputFolderalesome/path/outputFolder) --remove-destinationlub--updatew przypadku, gdy 2 nic nie zmieni, nadal rzeczy są kopiowaneoutputFolder/inputFolder
Czy istnieje sposób, aby to zrobić bez uprzedniego sprawdzenia istnienia outputFolder(jeśli folder nie istnieje, to ...) lub użycia rm -rf outputFolder?
Jaki jest uzgodniony, przenośny sposób UNIX?
rsync?
cp, przesyłanie potokowe między dwoma tarpoleceniami to niezawodny niezawodny sposób na kopiowanie drzew.
rsyncwysłany.
tar -C input -cf - . | tar -C output -xf -działa. -Czmienia katalog roboczy, ale nie jest to standardowa opcja, więc jeśli nie jest obsługiwany, musisz uruchomić dwie tabele w odpowiednich katalogach roboczych na początek, np. ( cd input && tar -cf - . ) | ( cd output && tar -xf - )Jeśli jednak masz do czynienia z Windows, użyłbym tylko odpowiedzi roaima.
mvprzenoszeniu kolekcji plików do jednego zwykłego pliku?