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ń.