2013-01-13 23 views
5

Wydaje się, że jest to bardzo podstawowe polecenie. Jednak nawet po godzinie szukania rozwiązania nadal nie mogę znaleźć czegoś, co działa.MAC: Jak scalić folder, abyśmy tylko zastępowali pliki źródłowe nowszymi niż pliki docelowe?

Mam więc dwa duże foldery (z wieloma plikami i wieloma podfolderami, mega kopie zapasowe). Chciałbym połączyć te dwa foldery w jeden folder zawierający tylko nowsze pliki. Dlatego szukam sposobu na zastąpienie plików, JEDEN TYLKO plik źródłowy jest nowszy niż plik docelowy lub gdy plik docelowy nie istnieje.

Używam wersji Mac 10.7.4. Jestem otwarty na instalację nowej aplikacji i/lub za pomocą polecenia terminal/bash.

+0

OS X 10.8 Mountain Lion robi to automatycznie za pomocą GUI . –

Odpowiedz

13

W systemach GNU użyj mv -u SOURCE DEST lub cp -u SOURCE DEST, aby przenieść lub skopiować tylko wtedy, gdy plik SOURCE jest nowszy niż plik DEST lub gdy brakuje pliku docelowego.

Należy pamiętać, że w OS X, mv i cp nie obsługują opcji -u. Jednak rsync posiada opcję -u i jest obsługiwane na OS X. Na przykład:

rsync -aru SOURCE/ DEST 

przeprowadzić kilka testów w katalogach zarysowania przed zastosowaniem go do dużych i ważnych katalogów, ponieważ (IMO) rsync jest niepowtarzalne dotyczące tego, czy katalog nazwy kończą się z lub bez /. Część strony podręcznika systemu Linux mówi:

Ukośny ukośnik na źródle zmienia to zachowanie, aby uniknąć tworzenia dodatkowego poziomu katalogu w miejscu docelowym. Możesz myśleć o źródle/źródle jako o treści "skopiuj zawartość tego katalogu" zamiast "skopiuj katalog po nazwie", ...

+0

Jeśli czytam dokumenty poprawnie, -r jest niejawnie częścią opcji -a (archiwum). Więc -jest taki sam jak -aru. Możesz całkowicie zapisać wpisanie litery! =) –

+0

@ChrisDragon, wygląda na to, że masz rację ... Powinienem był zauważyć, że * r * jest zbędny w * -aru * –

Powiązane problemy