cp hais kom ua: kom raug luam cov ntaub ntawv folders hauv * nix

cp hais kom ua: kom raug luam cov ntaub ntawv folders hauv * nix

Kab lus no yuav qhia qee yam tsis meej txog kev siv cov ntawv qub thaum luam, tsis meej pem hais kom coj cwj pwm cp thaum luam tawm, nrog rau cov txheej txheem uas tso cai rau koj kom raug luam tawm cov ntaub ntawv ntau yam tsis tau hla lossis poob.

Cia peb hais tias peb yuav tsum luam txhua yam los ntawm / qhov chaw folder mus rau / phiaj xwm folder.

Thawj yam uas los rau hauv siab yog:

cp /source/* /target

Cia peb kho qhov lus txib tam sim no rau:

cp -a /source/* /target

Ntsiab -a yuav ntxiv luam ntawm tag nrho cov cwj pwm, txoj cai thiab ntxiv recursion. Thaum tsis tas yuav muaj cov cai tsim tawm, ib qho tseem ceeb txaus -r.

Tom qab luam tawm, peb yuav pom tias tsis yog tag nrho cov ntaub ntawv tau theej - cov ntaub ntawv pib nrog lub cim xws li:

.profile
.local
.mc

thiab zoo li.

Vim li cas qhov no tshwm sim?

Vim tias wildcards ua tiav los ntawm lub plhaub (bash hauv ib rooj plaub). Los ntawm lub neej ntawd, bash yuav tsis quav ntsej tag nrho cov ntaub ntawv pib nrog dots, raws li nws kho lawv li zais. Txhawm rau zam qhov kev coj cwj pwm no peb yuav tau hloov tus cwj pwm bash siv cov lus txib:

shopt -s dotglob

Txhawm rau kom ntseeg tau tias qhov kev hloov pauv no tshwm sim tom qab rov pib dua, koj tuaj yeem tsim cov ntaub ntawv wildcard.sh nrog cov lus txib no hauv daim nplaub tshev /etc/profile.d (Tej zaum koj qhov kev faib tawm muaj ib daim nplaub tshev sib txawv).

Thiab yog tias tsis muaj cov ntaub ntawv hauv cov ntawv teev npe, ces lub plhaub yuav tsis muaj peev xwm hloov tau ib yam dab tsi nyob rau hauv qhov chaw ntawm lub hnub qub, thiab kev luam ntawv kuj yuav ua tsis tau. Muaj kev xaiv tawm tsam qhov xwm txheej no failglob ΠΈ nullglob. Peb yuav tau teem failglob, uas yuav tiv thaiv cov lus txib los ntawm kev ua tiav. nullglob yuav tsis ua haujlwm, txij li nws hloov txoj hlua nrog wildcards uas tsis pom qhov sib tw rau hauv txoj hlua khoob (zero length), uas rau cp yuav ua rau yuam kev.

Txawm li cas los xij, yog tias muaj ntau txhiab cov ntaub ntawv lossis ntau dua hauv cov ntawv tais ceev tseg, tom qab ntawd txoj hauv kev wildcards yuav tsum tau tso tseg tag nrho. Qhov tseeb yog qhov ntawd bash expands wildcards rau hauv kab hais kom ua ntev heev xws li:

cp -a /souce/a /source/b /source/c …… /target

Nws muaj qhov txwv ntawm qhov ntev ntawm kab hais kom ua, uas peb tuaj yeem paub siv cov lus txib:

getconf ARG_MAX

Cia peb tau txais qhov ntev tshaj plaws ntawm kab hais kom ua hauv bytes:

2097152

Los yog:

xargs --show-limits

Peb muab qee yam xws li:

….
Maximum length of command we could actually use: 2089314
….

Yog li, cia peb ua yam tsis muaj wildcards tag nrho.

Cia li sau xwb

cp -a /source /target

Thiab ntawm no peb tau ntsib nrog kev tsis meej pem ntawm tus cwj pwm cp. Yog tias / lub hom phiaj tsis muaj nyob, ces peb yuav tau txais yam peb xav tau.

Txawm li cas los xij, yog tias muaj lub hom phiaj nplaub tshev, ces cov ntaub ntawv yuav raug theej rau lub / phiaj xwm / qhov chaw folder.

Peb tsis tuaj yeem rho tawm / lub hom phiaj ua ntej, vim nws yuav muaj cov ntaub ntawv peb xav tau thiab peb lub hom phiaj, piv txwv li, yog ntxiv cov ntaub ntawv hauv / phiaj nrog cov ntaub ntawv los ntawm / qhov chaw.

Yog hais tias lub hauv paus thiab lub hom phiaj folders muaj npe tib yam, piv txwv li, peb tau luam tawm los ntawm / qhov chaw rau / tsev / qhov chaw, ces peb siv tau cov lus txib:

cp -a /source /home

Thiab tom qab luam tawm, cov ntaub ntawv hauv / tsev / qhov chaw yuav ntxiv nrog cov ntaub ntawv los ntawm / qhov chaw.

Qhov no yog qhov teeb meem tsim nyog: peb tuaj yeem ntxiv cov ntaub ntawv hauv cov ntawv teev npe yog tias cov folders muaj npe tib yam, tab sis yog tias lawv txawv, ces cov ntawv tais ceev tseg yuav muab tso rau hauv qhov chaw. Yuav ua li cas luam cov ntaub ntawv los ntawm / qhov chaw rau / phiaj siv cp yam tsis muaj wildcards?

Txhawm rau kom tau txais qhov kev txwv tsis zoo no, peb siv cov tshuaj tsis pom tseeb:

cp -a /source/. /target

Cov neeg uas paub txog DOS thiab Linux twb tau nkag siab txhua yam: hauv txhua lub nplaub tshev muaj 2 qhov tsis pom cov folders "." thiab "..", uas yog pseudo-folders txuas mus rau cov npe tam sim no thiab siab dua.

  • Thaum luam tawm cp tshawb xyuas qhov muaj nyob thiab sim tsim /target/.
  • Xws li cov npe muaj nyob thiab nws yog / lub hom phiaj
  • Cov ntaub ntawv los ntawm / qhov chaw tau theej rau / lub hom phiaj kom raug.

Yog li, dai nws nyob rau hauv ib tug bold thav duab hauv koj lub cim xeeb los yog ntawm phab ntsa:

cp -a /source/. /target

Tus cwj pwm ntawm cov lus txib no yog qhov tseeb. Txhua yam yuav ua haujlwm yam tsis muaj qhov yuam kev, tsis hais seb koj puas muaj ib lab cov ntaub ntawv lossis tsis muaj dab tsi.

tshawb pom

Yog tias koj xav tau luam tawm tag nrho cov ntaub ntawv los ntawm ib lub nplaub tshev mus rau lwm qhov, peb tsis siv wildcards, nws yog qhov zoo dua los siv lawv cp ua ke nrog ib lub sij hawm ntawm qhov kawg ntawm qhov chaw folder. Qhov no yuav luam tawm tag nrho cov ntaub ntawv, suav nrog cov zais cia, thiab yuav tsis poob nrog ntau lab cov ntaub ntawv lossis tsis muaj ntaub ntawv txhua.

Tom qab ntawd

vmspike pom zoo ib qho kev hais kom ua version nrog cov txiaj ntsig zoo sib xws:

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

CEEB TOOM: Letter case T muaj lub ntsiab lus. Yog tias koj sib xyaw ua ke, koj yuav tau txais cov khib nyiab tag nrho: qhov kev luam tawm yuav hloov.
Ua tsaug:

  • Tuam txhab uas muag RUVDS.COM rau kev txhawb nqa thiab lub sijhawm los tshaj tawm hauv koj qhov blog ntawm HabrΓ©.
  • Ib daim duab Triple Concept. Daim duab loj heev thiab cov ncauj lus kom ntxaws, tuaj yeem qhib rau ntawm lub qhov rais cais.

PS Thov xa tej yam yuam kev uas koj pom nyob rau hauv ib tug private lus. Kuv nce kuv karma rau qhov no.

cp hais kom ua: kom raug luam cov ntaub ntawv folders hauv * nix

Tau qhov twg los: www.hab.com

Ntxiv ib saib