ઉદાહરણ "xargs" આદેશનો ઉપયોગ

વર્ણન અને પરિચય

Xargs આદેશ સામાન્ય રીતે આદેશ વાક્યમાં ઉપયોગમાં લેવાય છે જ્યાં એક આદેશનો આઉટપુટ બીજા આદેશમાં ઇનપુટ આર્ગ્યુમેન્ટ તરીકે પસાર થાય છે.

ઘણા કિસ્સાઓમાં, કોઈ ખાસ આદેશ જેમ કે xargs તે પૂર્ણ કરવા માટે જરૂરી છે, કારણ કે "પાઇપ" અને "પુનર્નિર્દેશન" ઓપરેટરો સમાન પ્રકારની ટ્રાન્ઝેક્શન કરે છે. જો કે, કેટલીકવાર મૂળભૂત પાઇપિંગ અને પુનર્નિર્દેશન પદ્ધતિ સાથેના મુદ્દાઓ છે, દા.ત., જો દલીલોમાં ખાલી જગ્યાઓ હોય, તો એક્સર્જનો નિવારણ થાય છે.

વધારામાં, xargs ચોક્કસ આદેશ ચલાવે છે, જો જરૂરી હોય તો, તેને આપવામાં આવેલ તમામ દલીલોની પ્રક્રિયા કરવા. વાસ્તવમાં, તમે નિર્દિષ્ટ કરી શકો છો કે દર વખતે જ્યારે xargs ચોક્કસ આદેશ ચલાવે છે ત્યારે પ્રમાણભૂત ઇનપુટ સ્ટ્રીપ વાંચવા જોઈએ.

સામાન્ય રીતે, xargs આદેશનો ઉપયોગ કરવો જોઈએ જો કોઈ આદેશનો આઉટપુટ વિકલ્પોના ભાગ રૂપે વપરાય છે અથવા બીજા આદેશની માહિતી કે જેના પર ડેટા સ્ટ્રીમ થાય છે (પાઇપ ઑપરેટર "") નો ઉપયોગ કરીને. નિયમિત પાઈપ કરવાનું પૂરતું છે જો ડેટા બીજા આદેશના (પ્રમાણભૂત) ઇનપુટ તરીકે કરવાનો છે.

ઉદાહરણ તરીકે, જો તમે ફાઈલ નામો અને ડિરેક્ટરીઓની યાદી બનાવવા માટે ls આદેશનો ઉપયોગ કરો છો, અને પછી આ સૂચિને xargs આદેશ ચલાવો ઇકોમાં પાઇપ કરો, તો તમે નિર્દિષ્ટ કરી શકો છો કે નીચે પ્રમાણે દરેક પુનરાવર્તન પર ઇકો દ્વારા કેટલા ફાઇલ નામો અથવા ડિરેક્ટરી પર પ્રક્રિયા કરવામાં આવે છે. :

ls | xargs -n 5 ઇકો

આ કિસ્સામાં, ઇકો એક સમયે પાંચ ફાઇલ અથવા ડિરેક્ટરી નામ મેળવે છે. કારણ કે પડઘા અંતમાં એક નવો-લાઇન પાત્ર ઉમેરે છે, પાંચ નામો દરેક લાઇન પર લખવામાં આવે છે.

જો તમે કોઈ આદેશ ચલાવો છો જે મોટી અને અણધારી સંખ્યા વસ્તુઓ (દા.ત. ફાઇલ નામો) આપે છે જે વધુ પ્રોસેસિંગ માટે અન્ય આદેશ પર પસાર થાય છે તે વધુ પડતી દલીલોને અંકુશિત કરવાનું એક સારું વિચાર છે જે ઓવરલોડ અને ક્રેશિંગને ટાળવા માટે બીજી કમાન્ડ મેળવે છે.

નીચેના આદેશ વાક્ય પાર્ટીશનો cp આદેશ પર પસાર થયા પહેલાં 200 ના જૂથો શોધી ગ્રુપ દ્વારા ઉત્પાદિત ફાઇલ નામોની સ્ટ્રીમ છે, જે તેમને બેકઅપ ડાયરેક્ટરીમાં કૉપી કરે છે.

શોધો ./ -type f -name "* .txt" -print | | xargs -l200 -i સીપી -એફ {} ./backup

શોધો આદેશમાં "./" ઘટક વર્તમાન ડિરેક્ટરીને શોધવા માટે શોધ કરે છે. "-ટાઇપ એફ" દલીલ શોધને ફાઇલો પર પ્રતિબંધિત કરે છે, અને "-name" * .txt "ધ્વજ આગળના કોઈપણ ફિલ્ટર્સમાં" .txt "એક્સટેંશન નથી. } નોટેશન વરાળનું દરેક ફાઇલનું નામ રજૂ કરે છે.

નીચેની આદેશ ડિરેક્ટરી / tmp માં અથવા નીચેનાં નામની ફાઇલોને ડિફૉલ્ટ તરીકે શોધે છે અને તેમને કાઢી નાંખે છે.

શોધો / tmp -name કોર-પ્રકાર f-print. | xargs / bin / rm -f

નોંધ લો કે આ ખોટી રીતે કામ કરશે જો ત્યાં નવી ફાઇલ, સિંગલ અથવા ડબલ અવતરણ, અથવા જગ્યાઓ ધરાવતી કોઈપણ ફાઇલનામો હોય. નીચેના સંસ્કરણ ફાઇલનામોની એવી રીતે પ્રક્રિયા કરે છે કે જે ફાઇલ અથવા ડિરેક્ટરીના નામોમાં એક અથવા બે અવતરણચિહ્નો, જગ્યાઓ અથવા નવી લાઇનો શામેલ છે તે યોગ્ય રીતે હેન્ડલ કરવામાં આવે છે.

શોધો / tmp -nname core -type f -print0 | xargs -0 / bin / rm -f

-i વિકલ્પને બદલે તમે -I ફ્લેગનો પણ ઉપયોગ કરી શકો છો જે આ ઉદાહરણ તરીકે આદેશ દલીલોમાં ઇનપુટ લીટી દ્વારા બદલાયેલ શબ્દમાળાને સ્પષ્ટ કરે છે:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

રિપ્લેસમેન્ટ સ્ટ્રિંગને "{}" તરીકે વ્યાખ્યાયિત કરવામાં આવે છે. આનો અર્થ એ છે કે, આદેશ દલીલોમાં "{}" ના કોઈપણ વારાઓને પાઇપ ઓપરેશન દ્વારા એગ્રેજીમાં ફોરવર્ડ ઇનપુટ ઘટક દ્વારા બદલવામાં આવે છે. આ તમને એક્ઝિક્યુટ થવા (વારંવાર) આદેશની દલીલોમાં ચોક્કસ સ્થિતિ પર ઇનપુટ તત્વો મૂકવા માટે સક્રિય કરે છે.