Czy istnieje prosty sposób na rekurencyjne kopiowanie wszystkich ukrytych plików z katalogu do innego katalogu? Chciałbym wykonać kopię zapasową wszystkich plików ustawień w katalogu domowym, a nie zwykłych plików. Próbowałem:
cp -R .* directory
ale rozpoznaje .
i ..
rekurencyjnie kopiuje również wszystkie nie ukryte pliki. Czy istnieje sposób, aby cp zignorował .
i ..
?
-r
i-R
?Odpowiedzi:
Moimi ulubionymi do przeniesienia reżimów były:
który przetwarza bieżący katalog na standardowe wyjście, a następnie potokuje go do podpowłoki, która najpierw cd do katalogu docelowego przed rozpakowaniem standardowego wejścia. Prosty, bezpośredni, rozszerzalny - zastanów się, co się stanie, gdy zamienisz () na ssh na inną maszynę. Lub, aby odpowiedzieć na twoje pytanie, możesz:
źródło
cd /dest/dir && tar xvf -
.&&
Powstrzyma cię od blatting nad katalogu źródłowego, jeśli masz literówkę w miejscu przeznaczenia. 2) Potrzebujeszv
flagi tar tylko na jednym z poleceń tar (lub żadnym z nich).(cd /src/dir && tar cf - .) | tar xvf -
Niemal za każdym razem można to rozwiązać za pomocą:
To dość niezwykłe, że ukryty plik nie zaczyna się od jednej z tych postaci.
Dostępne są inne dopasowania wzorca (
.??*
,.[^.]*
) - patrz komentarzeźródło
Możesz użyć
rsync
.który skopiuje zawartość bieżącego katalogu (w tym pliki kropek, ale nie w tym
..
)źródło
.git
reż. Dodanie -C robi to, a więc polecenie staje się:rsync -aC ./ /some/other/directory/
Błagam Cię, krok od zwykłego rozszerzenia powłoki na
cp
linii poleceń - powłoki ekspansja ma wszelkiego rodzaju ahem . „Ciekawe” przypadkach rogu (niechcianej rekursji spowodowane i .., przestrzenie, niedrukowalny rzeczy, hardlinki, dowiązania symboliczne, i itd.) Użyjfind
zamiast tego (jest wfindutils
pakiecie, jeśli go nie masz - co byłoby dziwne, wszystkie dystrybucje instalują go domyślnie):Wyjaśnienie krok po kroku:
Tak więc, w prostym języku angielskim, ten
find
wiersz poleceń mówi:źródło
Zawsze używałem. ?? * do wyszukiwania ukrytych plików bez uzyskiwania „.” i "..". Może jednak przegapić „.a” lub coś takiego, ale nigdy nie mam takiego.
źródło
Znacznie lepsze odpowiedzi tutaj; /superuser/61611/how-to-copy-with-cp-to-include-hidden-files-and-hidden-directories-and-their-con
Opisuje na przykład użycie shopt do natywnego rozwiązania bash
źródło