Obecnie wiem jak skopiować pliki, które nie istnieją w katalogu docelowym. To pozwala mi kopiować z src
do dst
tak jak bym chciał.
Jednak teraz chcę skopiować z src
do dst/2016-01-05
ALE tylko pliki w src
które nie istnieją nigdzie w środku dst
.
Przykład
Załóżmy, że sytuacja początkowa jest
src/f1.txt
src/f2.txt
src/f3.txt
dst/2016-01-04/f1.txt
dst/2016-01-05/f0.txt
Następnie, po wykonaniu kopii, sytuacja końcowa powinna być:
src/f1.txt
src/f2.txt
src/f3.txt
dst/2016-01-04/f1.txt
dst/2016-01-05/f0.txt
dst/2016-01-05/f2.txt
dst/2016-01-05/f3.txt
Ogólnie nie chciałbym nadpisywać istniejących plików. Nawet jeśli źródło zostanie zaktualizowane.
src/
? Jeśli tak, w jaki sposób są obsługiwanedst/
? Czy katalog z kodem daty jest natychmiast poddst/
lub między katalogiem źródłowym a plikiem docelowym?src
. wdst
katalog, utworzę folder z aktualną datą, na przykładdst/2016-01-04
i umieść tam wszystkie pliki, które nie istniały w dowolnym miejscudst
jeszcze. (Nie chcę polegać na tym, jak długo trwały plikisrc
)Odpowiedzi:
Następujące czynności powinny załatwić sprawę: -
Uwagi: -
for f in src/*; ...
, za pomocąls
usuwa katalog z nazwy źródła i-A
zawiera nazwy plików zaczynające się od.
,.src/
musisz użyćfind
w katalogu źródłowym i paskusrc/
od nazwy z-printf %P\\n
.line
polecenie, którego możesz użyćwhile read f; ...
, ale to nie działa w przypadku nazw plików z białą i końcową spacją (nawetline
kończy się niepowodzeniem, jeśli nazwa pliku zawiera znak nowej linii - do tego trzeba użyćfind -print0
ixargs -0
).źródło