ઘણી વખત આપણે પીડીએફને ટેક્સ્ટમાં કન્વર્ટ કરવા, .ડોક ફાઇલોને એચટીએમએલ, વગેરેમાં રૂપાંતરિત કરવા માટે સ્ક્રિપ્ટ ચલાવવાની જરૂર છે; મુદ્દો એ છે કે આ આદેશો એક સમયે ફક્ત એક જ ફાઇલ સ્વીકારે છે અને તે અમને ખૂબ જ કંટાળાજનક છે જો આપણે ઘણી ફાઇલો પર એક જ કાર્ય કરવાની જરૂર હોય, ખાસ કરીને જ્યારે આપણે સ્ક્રિપ્ટ કરીએ.
નો ઉપયોગ કરીને આ સમસ્યાનું સમાધાન સૂચવુ છું ls, પરંતુ, grep, અવ્યવસ્થિત y sh. આપણે શું કરીશું દરેક પંક્તિમાં યોગ્ય આદેશ વાક્ય બનાવવું અને તેમને sh સાથે એક્ઝેક્યુટ કરવું, અને કેમ કે sh એક સમયે એક લીટી ચલાવશે, રેમ મેમરીનો વપરાશ વધશે નહીં, જે અન્ય પદ્ધતિઓથી અંડરપાવર્ડ મશીનોને પણ સ્થિર કરી શકે છે.
ચાલો જોઈએ કે આ આદેશ ક્રમ કેવી રીતે હાથ ધરવા.
1- આપણે જે કરવાનું છે તે પ્રથમ વસ્તુ તે ફાઇલોને દાખલ કરવાની છે કે જેના દ્વારા ઉપયોગ કરવામાં આવશે ls:
ls --directory /camino/a/carpeta/*.ext
2- તો પછી અવતરણો પસાર કરવા માટે અમને આ ફાઇલોની જરૂર પડશે «/ પાથ / ના જૂથમાં
ફાઈલો«
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/'
3- હવે અવ્યવસ્થિત તે ડેટા પ્રાપ્ત કરવા માટે તૈયાર હશે.
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/' | awk '{print $0}'
કારણ કે અવ્યવસ્થિત તેની પોતાની ભાષા છે આપણે આપણે અવતરણોને અલગ કરવાની જરૂર પડશે જે આપણે અન્ય કાર્યોમાં કોઈ ટેક્સ્ટને ટાંકવા માટે દેખાવા માંગીએ છીએ જે આપણે બેકસ્લેશનો ઉપયોગ કરવાની જરૂર પડશે. \ ચાલો જોઈએ કે કેટલાકને કેવી રીતે અલગ કરવું.
એક ભાવ અલગ કરો
\”
આઉટપુટમાં બksકસ્લેશ બતાવો (અમને ત્રણ બાર ટાઇપ કરવાની જરૂર પડશે)
\\\
કેટલીકવાર આપણને અલગ પાડનારની જરૂર પડે, ફક્ત બેકસ્લેશની અંદર દેખાતા ટેક્સ્ટ અથવા અવતરણો આઉટપુટમાં હશે:
'""'\"\'""'
4- ચાલો જોઈએ કે આદેશની મદદથી સૂચિબદ્ધ બધી ફાઇલોનું નામ કેવી રીતે લેવું mv ફક્ત પ્રત્યય દાખલ કરવા માટે. (હવે ફાઇલની સૂચિ બનાવવા માટે અમને "$ 0" સંયોજનનો ઉપયોગ કરવાની જરૂર પડશે જ્યારે પણ તેનો ઉપયોગ કરવાની જરૂર હોય)
ls --directory /camino/a/carpeta/*.ext | sed 's/^/"/' | sed 's/$/"/' | awk '{print "mv "$0" \"`dirname
"$ 0 ″" / લખાણ-કોઈપણ-aseબેસનામ "$ 0 ″" \ ""} '| એસ. એચ
પાછલા ક્રમમાં સંયોજન પ્રમાણે બતાવ્યા પ્રમાણે નોંધ ઉમેરવામાં આવી છે « | એસ. એચ »જે આ આદેશ દુભાષિયાને પાઈપલાઈન રીડાયરેક્ટ કરે છે
ચાલો સ્ક્રિપ્ટ બનાવવા માટે તૈયાર કેટલાક ઉદાહરણો જોઈએ.
ઉદાહરણો:
1- ટેક્સ્ટ ફાઇલોમાં સૂચિબદ્ધ બધા પીડીએફને રૂપાંતરિત કરો.
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "pdftotext",$0}' | sh
2- ચાલો આપણે ઈમેજ પર અસર લાગુ કરવા માંગીએ છીએ, પરંતુ મૂળમાં ફેરફાર કર્યા વિના, ચાલો તરંગ અસરવાળા ઉદાહરણ જોઈએ, જે વિન્ડોઝ XP લોગો માટે જાણીતું છે, કારણ કે તે effectsંચુંનીચું થતું અસરવાળું ધ્વજ છે (આ અસરની વધુ સારી પ્રશંસા કરવા માટે, તે તરીકે ઉપયોગ કરવાની ભલામણ કરવામાં આવે છે એક્સ્ટેંશન સાથેની પરિણામી છબી .png).
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="convert -wave 25x150
"$0"","\"\`dirname "$0"`/`basename "$0" | sed '"'"s/\\\\.[[:alnum:]]*$//"'"'`-wave.`basename "$0" |
rev | awk -F . \'"'"'\{print $1}\'"'"'\ | rev`'""'\"\'""' "}' | sh
નોંધ: આ ક્રમમાં ઘણા પાસ બનાવવામાં આવ્યા છે:
- એક ફોલ્ડર મેળવવા માટે જ્યાં ફાઇલ ડિર્નામ સાથે સ્થિત છે
- બીજું નામ મેળવવા માટે, પરંતુ કહ્યું ફાઇલના એક્સ્ટેંશનને દૂર કરવું
- બીજી ફાઇલની મુક્તિ મેળવવા માટે.
3- ચાલો હવે જોઈએ કે નામની આગળ સંબંધિત સંખ્યાને મૂકીને ફાઇલોના જૂથનું નામ કેવી રીતે બનાવવું (આંકડાત્મક પ્રત્યય)
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="mv "$0" '""'\"\'""'`dirname
"$0"`/"FNR"-`basename "$0"`'""'\"\'""' "}' | sh
ચાલો જોઈએ કે આંકડાકીય ઉપસર્ગ કેવી રીતે મૂકવો (અંતમાં એક નંબર મૂકો, પરંતુ મુક્તિ પહેલાં) આ વિકલ્પ ફક્ત ત્યારે જ માન્ય છે જો ફાઇલ પાસે.
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="mv "$0" \"`dirname
"$0"`/`basename "$0" | sed '\'s/\\\\.[[:alnum:]]*$//\''`-"FNR".`echo "$0" | rev | awk -F .
'""'\'\'""'{print $1}'""'\'\'""' | rev `\" " }' | sh
4- ચાલો એક ઉદાહરણ જોઈએ કે જ્યાં આપણે ડેટા દાખલ કરવો પડશે અથવા કાર્યોના જૂથને પસંદ કરવું પડશે, ઉદાહરણ તરીકે તે કેસ લેતા હોય છે જ્યાં આપણે સમાન પીડીએફ ફાઇલોથી પાસવર્ડ સુરક્ષાને દૂર કરીએ છીએ જેમાં સમાન પાસવર્ડ છે. (આ કિસ્સામાં આપણે ઝેનિટીનો ઉપયોગ સંવાદ બ asક્સ તરીકે કરીશું)
zenity --entry --hide-text --text "introduzca la clave de desbloqueo" > $HOME/.cat && ls
--directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="pdftk "$0" input_pw `cat
$HOME/.cat` output \"`dirname "$0"`/`basename "$0" .pdf`-unlock.pdf\" "}' | sh && rm
$HOME/.cat
તમે જોયું તેમ, ઉદ્દેશ ફાઇલની બિલાડી બનાવવાનો છે કે જે ફક્ત એક જ વાર લાઇનની શરૂઆતમાં બનાવવામાં આવશે અને પછી રૂપાંતર પૂર્ણ થયા પછી કા beી નાખવામાં આવશે.
5- બીજી ઉપયોગિતા છે, જ્યારે આપણે .zip માં કોમ્પેક્ટેડ ઘણી ફાઇલોને ડિમ્પ્રેસ કરવાની જરૂર હોય છે
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "unzip -x "$0" "}' | sh
ઉદાહરણ
"unzip -x "$0" "
6- ચાલો એક પાસવર્ડ સાથે પીડીએફને સુરક્ષિત કરવા માટે એક ઉદાહરણ જોઈએ, વાંચનને મંજૂરી આપીશું પરંતુ છાપવાની કોપી અથવા અન્ય વિકલ્પો સામે સુરક્ષિત છે, (સંવાદ બ inક્સમાં સૂચિબદ્ધ વિકલ્પો તે હશે કે પીડીએફમાં મંજૂરી આપવામાં આવશે, જો તમે તેમાંના કોઈપણને પરવાનગી આપવા માંગતા ન હોવ, તો કંઈ પસંદ ન કરો).
zenity --separator " " --multiple --text "Seleccione los Opciones que quiere permitir" --column "Opciones" --list "Printing" "DegradedPrinting" "ModifyContents" "CopyContents" "ScreenReaders" "ModifyAnnotations" "AllFeatures" > $HOME/.cat && zenity --entry --hidetext --text "Teclee la contraseña de protección" > $HOME/.cat2 && ls --directory "$@" | sed 's/^/"/' | sed 's/$/"/' | awk '{print FS="echo \"pdftk \\\"`echo "$0"`\\\" output \\\"`dirname "$0"`/`basename "$0" .pdf`-locked.pdf\\\" allow `cat $HOME/.cat` owner_pw \"`cat $HOME/.cat2`\"\" | sh "}' | sh && rm $HOME/.cat $HOME/.cat2
આ ઉદાહરણો સાથે તે એકદમ ઉદાહરણ આપવામાં આવ્યું છે કે આ સ્ક્રિપ્ટથી અનેક ફાઇલોને કન્વર્ટ કરવા, સંશોધિત કરવા અથવા નામ બદલવા અને એક પછી એક હાથથી રૂપાંતરિત કરવા માટે આ વિકલ્પનો ઉપયોગ કેવી રીતે કરવો. આ વિકલ્પ સાથેનો મેમરી વપરાશ ન્યૂનતમ છે, જે આદેશનો ઉપયોગ કરવામાં આવે છે તેના આધારે, કારણ કે તે તે જ સમયે તેમને રૂપાંતરિત કરતું નથી, પરંતુ એક પછી એક.
ls --directory %F | sed 's/^/"/' | sed 's/$/"/' | awk '{print "script-convertir-video "$0" "}' | sh && zenity --info --text "Todas las conversiones han terminado"
ફાઇન
તે ઘણું બધુ નહીં થાય, પરંતુ નિયમિત અભિવ્યક્તિઓ અથવા વાઇલ્ડકાર્ડનો ઉપયોગ કરીને આ બધું કરવું વધુ સરળ છે? હું સમજતો નથી કે આમાં શું તફાવત છે અને આનાથી તમારા જીવનને આટલું જટિલ બનાવે છે.
સત્ય ટાડે છે, તમને લિનોક્સ આદેશોનું મહાન જ્ haveાન છે. ખૂબ જ ઉપયોગી!
હા, હું જાણું છું કે અમે તેની સાથે આજુબાજુમાં ઘણું શીખીશું હહાહા.
મને લાગે છે કે આ ખૂબ સરળ છે:
ls -d /path/to/folder/*.ext | ફાઇલ વાંચતી વખતે; કમાન્ડ કરો "$ ફાઇલ"; થઈ ગયું
કોમંડને બદલે તમે જે ઇચ્છો તે મૂકી શકો છો અને ફાઇલોમાં ખાલી જગ્યાઓ હોય ત્યાં સુધી તમે $ ફાઇલ અવતરણો વચ્ચે મૂકશો ત્યાં સુધી તે કાર્ય કરે છે. તમારે તેના માટે સેડનો ઉપયોગ કરવાની જરૂર નથી અથવા આડઅસર સાથે આદેશો બનાવવાની જરૂર નથી. પણ આ ઓછી પ્રક્રિયાઓ શરૂ કરે છે.
o:
હું in માં (ls -d /path/a/folder/*.ext); કમાન્ડ કરો “$ i”; થઈ ગયું;
તે સારું લાગે છે, પરંતુ જો ફાઇલ નામોમાં બ્લેન્ક્સ હોય તો તે કામ કરતું નથી. 🙂
હકીકતમાં, હેક્સબર્ગ શા માટે આ વિકલ્પ સાથેની દરેક લાઇન માટે શરૂઆતમાં અને અંતમાં આઉટપુટ ટેક્સ્ટ ટાંકવામાં આવે છે:
ls irectડિરેક્ટરી | સેડ 's / ^ / »/' | સેડ 's / $ / »/'
હું સ્પષ્ટ કરું છું કે શોધનો ઉપયોગ પેટા ડિરેક્ટરીઝ શોધવા માટે થઈ શકે છે.
પરંતુ મારી યુક્તિથી તમારે કરવાની જરૂર નથી. ls દરેક લાઇન પર એક સંપૂર્ણ ફાઇલનામો બહાર કા andે છે અને વાંચે છે એક વાક્ય બરાબર વાંચે છે અને ફાઇલ નામને ફાઇલ ચલમાં છોડી દે છે કે કેમ કે તેમાં ખાલી જગ્યાઓ છે કે નહીં. આદેશમાં તેનો ઉપયોગ કરતી વખતે તમારે ફક્ત $ ફાઇલની આસપાસ અવતરણો મૂકવાની જરૂર છે.
હું સંમત છું કે શોધવામાં તે ઓછું બોજારૂપ હોઈ શકે છે. ચાલો લેખમાંથી આ ઉદાહરણ લઈએ:
ls --directory “$@” | sed 's/^/"/' | sed 's/$/"/' | awk '{print "pdftotext",$0}' | sh
આ આ રીતે સારી રીતે સિદ્ધ થઈ શકે છે, અને તે કદાચ ઝડપથી ચાલશે:
find . -type f -print0 | xargs -0 pdftotext
તેણે કહ્યું, લેખ આવકાર્ય છે, કંઇક કરવાની વૈકલ્પિક રીતો વિશે જાણવું હંમેશાં સારું છે.
જો તમે જોશો કે $ i અવતરણમાં છે. તે ગોરા સ્થાનને છટકીને બિનજરૂરી બનાવે છે.
હા, પરંતુ $ () operatorપરેટર ક્યાંય અવતરણો મૂક્યા વિના ફાઇલના નામોને વિસ્તૃત કરે છે, તેથી ચલ હું પહેલેથી જ કટ ફાઇલોના નામ પકડે છે. ડિરેક્ટરીના ટર્મિનલમાં તેને અજમાવો જેમાં નામોની જગ્યાઓવાળી ફાઇલો હોય.
ખૂબ સારું, જટિલ, પણ ખૂબ રસપ્રદ.
આ આશ્ચર્યજનક છે, મહાન !!!!
ઉત્તમ, GNU / Linux ની પ્લાસ્ટિકિટીની કોઈ મર્યાદા નથી.
પ્રિય બ્લોગર,
હું નતાલિયા છું, પેપરબ્લોગ પરના કમ્યુનિકેશન્સ મેનેજર. તેને શોધી કા After્યા પછી, હું તમને સંપર્ક કરી રહ્યો છું તમને પેપરબ્લોગ પ્રોજેક્ટ જાણવા માટે આમંત્રિત કરવા, http://es.paperblog.com, નવી નાગરિક પત્રકારત્વ સેવા. પેપરબ્લોગ એ ડિજિટલ પ્લેટફોર્મ છે જે બ્લ magazineગ મેગેઝિન તરીકે રજિસ્ટર્ડ બ્લોગ્સના શ્રેષ્ઠ લેખો પ્રકાશિત કરે છે.
જો ખ્યાલ તમારી રુચિ છે, તો તમારે ભાગ લેવા માટે ફક્ત તમારા બ્લોગનો પ્રસ્તાવ મૂકવો પડશે. આ લેખની સાથે સાથે તમારું નામ / ઉપનામ અને પ્રોફાઇલ ફાઇલ, તેમજ મૂળ બ્લોગની કેટલીક લિંક્સ, શરૂઆતમાં અને દરેકના અંતે હશે. કવર પેજ પર હાજર થવા માટે ટીમ દ્વારા સૌથી વધુ રસપ્રદ લોકોની પસંદગી કરી શકાય છે અને તમને તે દિવસના લેખક તરીકે પસંદ કરી શકાય છે.
હું આશા રાખું છું કે તમે જાન્યુઆરી 2010 માં આવા ઉત્સાહથી શરૂ કરેલા પ્રોજેક્ટથી તમે પ્રેરિત છો. એક નજર જુઓ અને વધુ વિગતો માટે મને લખવા માટે અચકાશો નહીં.
સૌહાર્દપૂર્ણ અને પ્રેમાળ શુભેચ્છા પ્રાપ્ત કરો,
નતાલિયા