Fájl másolása több könyvtárba egy paranccsal Linux alatt
Egy fájl másolása a Linux parancssorral egyszerű. Mi van azonban, ha ugyanazt a fájlt több különböző helyre szeretné másolni? Ez is könnyű, és megmutatjuk, hogyan kell ezt egy parancs segítségével csinálni.
Általában egy fájl másolásához használná a cp
parancs, amely a forrásfájlhoz és a célkönyvtárhoz kapcsolódik:
cp ~ / Dokumentumok / FileToBeCopied.txt ~ / TextFiles /
Ha további két könyvtárba szeretné másolni, sokan még egyszer kétszer futtatják a parancsot, különböző célállomásokkal:
cp ~ / Dokumentumok / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Dokumentumok / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Ugyanakkor ugyanezt a feladatot egy parancs segítségével tehetjük:
echo dir1 dir2 dir3 xargs -n 1 cp fájl1
Ez a parancs hogyan működik. A visszhang
parancs általában a képernyőre ír. Ebben az esetben azonban a program kimenetét kívánjuk táplálni visszhang
parancsot xargs
parancs. Ehhez a cső szimbólumot használjuk ( |
), amely egy parancs egyik kimenetét egy másik bemenetként adja át. A xargs
parancs fut a cp
parancsot háromszor, minden alkalommal, amikor hozzáadja a következő könyvtárútvonalat, amelyre az visszhang
parancsot a cp
parancs. Három érv kerül átadásra xargs
, de a -n 1
opció a xargs
A parancs azt mondja, hogy csak egy ilyen argumentumot csatol egy időben a cp
parancs minden egyes futtatásakor.
Tehát, a korábbi példánkhoz ragaszkodva a három külön cp
a fenti parancsok ilyenkor egy parancsként kombinálhatók:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Ne feledje, hogy ha a másolandó fájl létezik a megadott célkönyvtárak bármelyikében, akkor az adott célállomáson lévő fájl automatikusan kicserélésre kerül. Nem fogja megkérdezni, hogy ki szeretné-e cserélni a fájlt. (Általában, amikor a cp
parancsot, hogy egy fájlt egyetlen helyre másoljon, hozzáadhatja a -én
lehetőség arra, hogy megkérdezze, hogy ki kíván-e cserélni egy meglévő fájlt. Azonban a -én
az opció egy interaktív lehetőség (ez a cp
parancsot kérni a felhasználótól), és nem használhat interaktív opciót a cp
parancs használatakor xargs
.)
Egy másik megfontolandó dolog, hogy ha egy nagyon nagy fájlt másol, akkor érdemes felvenni a nem-clobber-t ( -n
) opció a cp
parancsot a fenti parancsban. Ez az opció automatikusan megakadályozza, hogy egy fájl felülírja a rendeltetési helyet, ha már létezik ott. Ha nagyon nagy fájlt másol át a hálózaton, lehet, hogy lassú, és esetleg elkerülheti a fájl másolásához és cseréjéhez szükséges erőforrásokat. A következő parancs hozzáadja a -n
opció, és nem másolja a fájlt az argumentumokban felsorolt célállomásokra az echo utasításhoz, ha a fájl már létezik az adott célállomáson.
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
A parancsok sorában írja be a man echo, man xargs vagy man cp parancsokat a további parancsokról..