Chcę cp aaa/deep/sea/blob.psd
, abybbb/deep/sea/blob.psd
Jak wykonać kopię, jeśli nie istnieją katalogi deep
i , aby kopia tworzyła potrzebne katalogi i kopiowała plik?sea
bbb
W tej chwili jestem
No such file or directory
tak głęboki, że morze nie istnieje.
Spojrzałem na strony pomocy mężczyzny i inne pytania, ale nic na mnie nie wyskoczyło.
Najbliżej korzystam rcp
z katalogu:
rcp -r aaa/deep/sea/ bbb/deep/sea/
chociaż to kopiuje cały katalog i zawartość, a ja chcę tylko jeden plik. Jednak próba zrobienia tego dałacp: cannot create regular file bbb/deep/sea/blob.psd' such file or directory
rsync
Odpowiedź będzie tworzyć tylko 1 katalog, apax
nie wydaje się być powszechne.-d
zamiast-D
na komputerze Mac.755
(rwxr-xr-x
), co prawdopodobnie nie jest pożądane. możesz określić coś innego za pomocą-m
przełącznika, ale nie mogłem znaleźć sposobu, aby zachować uprawnienia do plików :(Dzięki standardowym poleceniom (POSIX / Unix) masz:
źródło
info tar
- gdzieś w części poświęconej przenośności - myślę, że przekonasz się, że GNUtar
twierdzi, że jest w pełnipax
kompatybilny. I tak zrobiłem, chociaż nigdy nie udało mi się wystawić tych roszczeń na próbę.Nie wiem, jak to zrobić
cp
, ale z pewnością jest to możliwe przy użyciursync
:gdzie
dir
jest katalog, który nie musi istnieć. Istnieje wiele innych sposobów osiągnięcia tego samego za pomocą innych poleceń.źródło
rsync -R
zachowaćrsync
wymaga więcej opcji, ale pytanie dotyczyło po prostu utworzenia nieistniejącego katalogu docelowego, stąd moja krótka odpowiedź :)cp
ma taką--parents
opcję.Jeśli nie masz
pax
(jest to wymagane przez POSIX, jako standardowy zamiennik cpio i tar, który miał zbyt wiele niezgodności do standaryzacji), użyjcpio -p
lubtar -cf - … | tar -xf -
zamiast tego.źródło