28Jun

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

click fraud protection

Kopiowanie pliku za pomocą wiersza poleceń systemu Linux 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żyj polecenia cp, łączącego 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 poleceniewięcej razy, z różnymi 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 plik 1 cp1

Oto jak działa to polecenie. Polecenie echo normalnie zapisuje na ekranie. Jednak w tym przypadku chcemy przekazać dane wyjściowe polecenia echo jako dane wejściowe do polecenia xargs. Aby to zrobić, używamy symbolu potoku( |), który przekazuje dane wyjściowe z jednego polecenia jako dane wejściowe do innego. Polecenie xargs uruchomi komendę cp trzy razy, za każdym razem dołączając do niej ścieżkę do następnego katalogu z komendy echo na końcu polecenia cp. Istnieją trzy argumenty przekazywane do xargs, ale opcja -n 1 w komendzie xargs mówi, aby dołączać tylko jeden z tych argumentów do polecenia cp za każdym razem, gdy jest uruchamiany.

instagram viewer

Aby zachować wcześniejszy przykład, trzy oddzielne polecenia cp 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.(Zwykle, gdy używasz polecenia cp do skopiowania pliku do pojedynczej lokalizacji, możesz dodać opcję -i, aby zapytać, czy chcesz zastąpić istniejący plik. Jednak opcja -i jest interaktywną opcją( powodujecp, aby poprosić o dane wejściowe od użytkownika) i nie możesz używać interaktywnej opcji z poleceniem cp, gdy używasz go w połączeniu z xargs.)

Jeszcze jedną rzeczą do rozważenia jest to, że jeśli kopiujesz bardzo duży plik, możeszchcesz dodać opcję no-clobber( -n) do polecenia cp w pojedynczym poleceniu powyżej. Ta opcja automatycznie zapobiega nadpisaniu 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. Poniższe polecenie dodaje opcję -n i nie skopiuje pliku do żadnego 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 na temat któregokolwiek z tych poleceń.