Główna » jak » Jak skopiować plik do wielu katalogów za pomocą jednego polecenia w systemie Linux

    Jak skopiować plik do wielu katalogów za pomocą jednego polecenia w systemie Linux

    Skopiowanie pliku linią poleceń Linuksa jest łatwe. Co jednak, jeśli chcesz skopiować ten sam plik do kilku różnych lokalizacji? To też jest łatwe, a pokażemy ci, jak to zrobić za pomocą jednego polecenia.

    Normalnie, aby skopiować jeden plik, użyjesz cp polecenie, łącząc się z plikiem źródłowym i katalogiem docelowym:

    cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles /

    Aby skopiować go do dwóch innych katalogów, wiele osób po prostu uruchomiłoby komendę jeszcze dwa razy, z innymi celami:

    cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
    cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /

    Jednak możemy wykonać to samo zadanie za pomocą jednego polecenia:

    echo dir1 dir2 dir3 | xargs -n 1 plik cp plik1

    Oto jak działa to polecenie. The Echo polecenie normalnie zapisuje na ekranie. Jednak w tym przypadku chcemy zasilić wyjście Echo polecenie jako wejście do xargs dowództwo. Aby to zrobić, używamy symbolu rury ( | ), który podaje dane wyjściowe z jednego polecenia jako dane wejściowe do innego. The xargs Polecenie uruchomi cp trzykrotnie, za każdym razem dołączając do niego ścieżkę do następnego katalogu z poziomu Echo polecenie na końcu cp dowództwo. Do przekazania są trzy argumenty xargs , ale -n 1 opcja na xargs Polecenie mówi, aby tylko dołączyć jeden z tych argumentów na raz do cp polecenie za każdym razem, gdy jest uruchamiane.

    Tak więc, aby trzymać się naszego przykładu z wcześniejszych trzech oddzielnych cp powyższe polecenia można połączyć w jedno takie polecenie:

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt

    Zwróć uwagę, że jeśli kopiowany plik istnieje w dowolnym z określonych katalogów docelowych, plik w tym miejscu docelowym zostanie automatycznie zastąpiony. Nie pojawi się pytanie, czy chcesz zastąpić plik. (Normalnie, gdy używasz cp polecenie, aby skopiować plik do pojedynczej lokalizacji, możesz dodać znak -ja opcja, aby zapytać, czy chcesz zastąpić istniejący plik. Jednakże -ja opcja jest opcją interaktywną (powoduje cp polecenie prosić o dane wejściowe od użytkownika) i nie można używać interaktywnej opcji z cp polecenie podczas używania go w połączeniu z xargs .)

    Jeszcze jedną rzeczą do rozważenia jest to, że jeśli kopiujesz bardzo duży plik, możesz chcieć dodać no-clobber ( -n ) opcja do cp polecenie w jednym poleceniu powyżej. Ta opcja automatycznie zapobiega zastąpieniu pliku w miejscu docelowym, jeśli już istnieje. Jeśli kopiujesz bardzo duży plik przez sieć, może być on powolny i możesz chcieć uniknąć korzystania z zasobów wymaganych do skopiowania i zamiany pliku. Następujące polecenie dodaje znak -n opcja i nie skopiuje pliku do dowolnego miejsca docelowego wymienionego w argumentach instrukcji echo, jeśli plik już istnieje w tym miejscu docelowym.

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt

    Wpisz man echo, man xargs lub man cp w wierszu poleceń w systemie Linux, aby uzyskać więcej informacji o dowolnym z tych poleceń.