W bash muszę to zrobić:
weź wszystkie pliki z katalogu
skopiuj je do istniejącego katalogu
Jak mam to zrobic? Próbowałem cp -r t1 t2
(zarówno t1, jak i t2 to istniejące katalogi, t1 zawiera pliki), ale utworzyłem katalog o nazwie t1 wewnątrz t2, nie chcę tego, potrzebuję plików w t1, aby przejść bezpośrednio do t2. Jak mam to zrobic?
cp
pytania mogą być postrzegane jakobash
pytania, które są językiem programowania. Nigdy nie widziałem, aby pytanie Pythona mówiące o kopiowaniu plików było zamknięte.Odpowiedzi:
Co chcesz to:
Kropka na końcu informuje go o skopiowaniu zawartości bieżącego katalogu, a nie samego katalogu. Ta metoda obejmuje również ukryte pliki i foldery.
źródło
mv
. Czy ktoś wie dlaczego?Jeśli chcesz skopiować coś z jednego katalogu do bieżącego katalogu, wykonaj następujące czynności:
Zakłada się, że nie próbujesz kopiować ukrytych plików.
źródło
Lub jeśli masz katalogi w katalogu 1, które również chcesz skopiować
źródło
dir1/.*
nie jest dobrym pomysłem, ponieważ kopiuje katalog1 / .. (tzn. Rodzic katalogu, który próbujesz skopiować). Kopiuje również dir1 /. co jest w porządku, poza tym, że zostało już (głównie) skopiowane, więc wykonujesz pracę dwa razy.dir1/.*
problem z / ukrytymi plikami, zapisując płyty CD w katalogu, z którego chcesz skopiować, a następnie nazywając to.
. Tak więc, jeśli chcesz skopiować wszystkie pliki, w tym ukryte pliki z katalogu do istniejącego katalogu, możesz:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.Zakładając, że t1 to folder z plikami, a t2 to pusty katalog. To, czego chcesz, to coś takiego:
Pamiętaj, że w pierwszym przykładzie t1 it2 muszą być ścieżkami pełnymi lub ścieżkami względnymi (zależnie od tego, gdzie jesteś). Jeśli chcesz, możesz przejść do pustego folderu (t2) i zrobić to:
Lub możesz przejść do folderu z plikami (t1) i zrobić to:
Uwaga: znak * (lub symbol wieloznaczny) oznacza wszystkie pliki i foldery. Flaga -R oznacza rekurencyjnie (wszystko we wszystkim).
źródło
Końcowy ukośnik w katalogu źródłowym nieznacznie zmienia semantykę, więc kopiuje zawartość, ale nie sam katalog. Pozwala to również uniknąć problemów z globowaniem i niewidzialnymi plikami, które ma odpowiedź Bertranda (kopiowanie
t1/*
pomija niewidzialne pliki, kopiowanie `t1 / * t1 /.* 'kopiuje t1 /. I t1 / .., których nie chcesz).źródło
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(przepraszam, nie ma formatu kodu w komentarzach, czytelna wersja na pastebin.com/yszSxV6G )W zależności od niektórych szczegółów może być konieczne zrobienie czegoś takiego:
... to zasadniczo zmienia katalog SRC i kopiuje go do celu, a następnie wraca do miejsca, z którego zacząłeś.
Dodatkowe zamieszanie polega na obsłudze względnych lub bezwzględnych celów.
(Nie opiera się to na subtelnej semantyce samego
cp
polecenia ... o tym, jak obsługuje specyfikacje źródłowe ze znakiem końcowym lub bez / /, ponieważ nie jestem pewien, czy są one stabilne, przenośne i niezawodne poza GNUcp
i I nie wiem, czy tak będzie w przyszłości).źródło
W przypadku niektórych katalogów zostanie to wykorzystane jako pełne, ponieważ kopiuje całą zawartość z „folderu 1” do nowego katalogu „folder2” w jakimś katalogu.
$ (pwd) otrzyma ścieżkę do bieżącego katalogu.
Zwróć uwagę na kropkę (.) Za folderem 1, aby uzyskać całą zawartość folderu 1
źródło