Kopiowanie jednego pliku jednocześnie do wielu lokalizacji za pośrednictwem wiersza poleceń Ubuntu


Jako nowicjusz w wierszu poleceń możesz mieć wrażenie, że to samo zadanie, które szybko wykonałeś za pomocą interfejsu graficznego, może wymagać wielu poleceń w wierszu poleceń. Jednakże, gdy powoli stajesz się zaawansowanym użytkownikiem linii poleceń dzięki uczeniu się, ćwiczeniom i doświadczeniu, zaczniesz zauważać, że te same zadania można wykonać bardzo szybko za pomocą bardzo prostych, ale przydatnych skrótów. W tym artykule opiszemy jeden taki przypadek, który najwyraźniej może wymagać wielu poleceń, ale w rzeczywistości jedno proste polecenie może wykonać zadanie za Ciebie.

Czasami wymagamy skopiowania jednego pliku do wielu lokalizacji w naszym systemie. Czy to oznacza, że ​​musimy użyć polecenia cp wiele razy? Odpowiedź brzmi nie! Przeczytajmy dalej, aby znaleźć rozwiązanie.

Polecenia wymienione w tym artykule zostały uruchomione w systemie Ubuntu 18.04 LTS.

Jak skopiować jeden plik jednocześnie do wielu lokalizacji

Wszyscy wiemy, jak polecenie cp pozwala nam skopiować plik do nowej lokalizacji za pomocą następującej składni:

$ cp ~[/location/sourcefile] ~[/destinationfolder]

Tutaj kopiuję przykładowy plik tekstowy z mojego Pobiera folder do folderu Dokumenty:

Teraz, jeśli chcę skopiować ten sam plik do dwóch różnych lokalizacji zamiast do jednej, prawdopodobne rozwiązanie wydaje się przy użyciu polecenia cp dwukrotnie.

Tutaj używam dwukrotnie polecenia cp do skopiowania przykładowego pliku tekstowego z folderu Pobrane do folderów publicznych i pulpitu:

Dwukrotne skopiowanie tego samego pliku do dwóch lokalizacji za pomocą polecenia cp wydaje się logiczne, ale załóżmy, że musisz skopiować plik do trzech, pięciu lub nawet więcej lokalizacji. Oto, w jaki sposób jedno polecenie może osiągnąć ten cel.

Składnia:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]

W poniższym przykładzie użyję tego polecenia, aby skopiować przykładowy plik tekstowy z folderu Pobrane do trzech różnych folderów jednocześnie:

Użyliśmy polecenia echo i polecenia xargs w jednym linia do osiągnięcia naszego celu.

Jak działa polecenie?

Polecenie echo wypisuje dane wyjściowe na ekran, ale w naszym przykładzie używamy ich do przesyłania danych wyjściowych do polecenia xargs za pomocą | symbol. Polecenie xargs pobierze dane wejściowe trzykrotnie z polecenia echo i trzykrotnie wykona operację cp, kopiując przykładowy tekst do trzech różnych lokalizacji. Liczba n mówi komendzie cp, aby pobierała jeden argument na raz.

Należy pamiętać, że to polecenie zastąpi już istniejący plik o tej samej nazwie w folderze docelowym. Dlatego dobrą praktyką jest zawsze wykonywanie kopii zapasowych ważnych plików. Opcja i, której użyliśmy do zapytania przed operacją zastępowania, nie działa z poleceniem xargs.

Istnieje jednak jedno użycie polecenia, które może pomóc w uniknięciu nadpisania pliku, jeśli już istnieje on w folderze docelowym; opcja n przed plikiem źródłowym.

Składnia:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]

Przykład:

Opcja n jest bardzo przydatna podczas kopiowania bardzo dużych plików z jednej lokalizacji do drugiej, szczególnie przez sieć. W ten sposób można uniknąć marnowania zasobów podczas kopiowania, a następnie zastępowania już istniejącego pliku.

Po uruchomieniu tego samouczka zbliżyłeś się o krok do zostania guru linii poleceń. Teraz nie musisz pisać wielu poleceń, aby wykonać proste zadanie kopiowania jednego pliku do różnych lokalizacji. Możesz scalić polecenie echo i xargs, jak opisano powyżej, aby uzyskać rozwiązanie jednego problemu dla jednego polecenia.

Komentarze