બાશમાં ફાઇલનામ અને એક્સ્ટેંશનને કેવી રીતે અલગ કરવું

બાશમાં ફાઇલનામ અને એક્સ્ટેંશનને કેવી રીતે અલગ કરવું
બાશમાં ફાઇલનામ અને એક્સ્ટેંશનને કેવી રીતે અલગ કરવું

પરિચય:

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

ઉદાહરણ તરીકે, `a.b.js` જેવી ફાઇલનામ ખોટી રીતે `a.b` અને `js` ને ​​બદલે `a` અને `b.js`માં વિભાજિત થશે. જો કે પાયથોન `os.path.splitext()` સાથે સરળ ઉકેલ પૂરો પાડે છે, પાયથોનનો ઉપયોગ હંમેશા સૌથી વધુ કાર્યક્ષમ વિકલ્પ ન હોઈ શકે. આ લેખ Bash માં આ કાર્ય હાંસલ કરવા માટે વધુ સારી પદ્ધતિઓની શોધ કરે છે.

આદેશ વર્ણન
${variable%.*} ફાઇલનામમાંથી એક્સ્ટેંશનને દૂર કરવા માટે પરિમાણ વિસ્તરણ.
${variable##*.} ફાઇલનામમાંથી એક્સ્ટેંશન કાઢવા માટે પરિમાણ વિસ્તરણ.
awk -F. ફીલ્ડ વિભાજકને સમયગાળામાં સેટ કરે છે, ફાઇલનામને વિભાજિત કરવા માટે વપરાય છે.
OFS="." awk માં આઉટપુટ ફીલ્ડ વિભાજક, એક્સ્ટેંશન વિના ફાઇલનામને પુનઃનિર્માણ કરવા માટે વપરાય છે.
NF-- એક્સ્ટેંશનને અસરકારક રીતે દૂર કરીને, awk માં ફીલ્ડ્સની સંખ્યાને એકથી ઘટાડે છે.
${BASH_REMATCH} એરે જે બૅશમાં નિયમિત અભિવ્યક્તિમાંથી મેળ ધરાવે છે.
local variable Bash માં ફંક્શનમાં સ્થાનિક અવકાશ સાથે ચલ જાહેર કરે છે.

બેશ સોલ્યુશન્સનું વિગતવાર બ્રેકડાઉન

પૂરી પાડવામાં આવેલ સ્ક્રિપ્ટો બાશમાં ફાઇલનામ અને તેના વિસ્તરણને અલગ કરવા માટે વિવિધ પદ્ધતિઓ પ્રદાન કરે છે. પ્રથમ સ્ક્રિપ્ટ Bash પરિમાણ વિસ્તરણનો ઉપયોગ કરે છે. ચલ ${FILE%.*} છેલ્લા પીરિયડથી સ્ટ્રિંગના અંત સુધીની દરેક વસ્તુને છીનવીને એક્સ્ટેંશનને દૂર કરે છે, જ્યારે ${FILE##*.} છેલ્લા સમયગાળા પછી બધું લઈને એક્સ્ટેંશન મેળવે છે. આ પદ્ધતિ મોટાભાગની ફાઇલનામ રચનાઓ માટે સીધી અને કાર્યક્ષમ છે. બીજી સ્ક્રિપ્ટનો ઉપયોગ થાય છે awk, યુનિક્સ જેવા વાતાવરણમાં એક શક્તિશાળી ટેક્સ્ટ-પ્રોસેસિંગ સાધન. ઉપયોગ કરીને સમયગાળા માટે ક્ષેત્ર વિભાજક સેટ કરીને -F., તે ફાઈલનામને ભાગોમાં વિભાજીત કરવા માટે પરવાનગી આપે છે. આઉટપુટ ફીલ્ડ વિભાજક, OFS=".", અને સાથે ક્ષેત્રોની સંખ્યા ઘટાડવી NF-- ફાઇલનામને તેના વિસ્તરણ વિના ફરીથી એસેમ્બલ કરવાની તકનીકો છે.

ત્રીજી સ્ક્રિપ્ટ બેશમાં રેગ્યુલર એક્સપ્રેશનનો ઉપયોગ કરે છે ${BASH_REMATCH} રેજેક્સ મેચમાં જૂથોને કેપ્ચર કરવા માટે. આ સ્ક્રિપ્ટ એક પેટર્નનો ઉપયોગ કરે છે જે ફાઇલનામને બે જૂથોમાં વિભાજિત કરે છે: એક આધાર નામ માટે અને એક એક્સ્ટેંશન માટે. છેલ્લે, કસ્ટમ ફંક્શન સ્ક્રિપ્ટ ફંક્શનની અંદર પેરામીટર વિસ્તરણ લોજિકને સમાવે છે, કોડની પુનઃઉપયોગીતા અને વાંચનક્ષમતા વધારે છે. તે વાપરે છે local variable મોટી સ્ક્રિપ્ટોમાં અનિચ્છનીય આડ અસરોને અટકાવીને કાર્યની અંદર ચલોને અવકાશમાં રાખવાની ઘોષણાઓ. દરેક પદ્ધતિ બેશ સ્ક્રિપ્ટીંગની વૈવિધ્યતા અને શક્તિને દર્શાવતી સમાન સમસ્યાને ઉકેલવા માટે એક અલગ અભિગમ દર્શાવે છે.

બેશમાં પેરામીટર વિસ્તરણનો ઉપયોગ કરવો

બેશ સ્ક્રિપ્ટીંગ

#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

ફાઇલનામ અને એક્સ્ટેંશનને અલગ કરવા માટે Awk નો ઉપયોગ કરવો

Awk સાથે બેશ

#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

બાશમાં રેગ્યુલર એક્સપ્રેશનનો ઉપયોગ કરવો

રેજેક્સ સાથે બેશ સ્ક્રિપ્ટીંગ

#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

Bash માં કસ્ટમ ફંક્શનનો ઉપયોગ કરવો

કસ્ટમ ફંક્શન સાથે બેશ સ્ક્રિપ્ટીંગ

#!/bin/bash
# Function to extract filename and extension
extract_filename_extension() {
  local file="$1"
  echo "Filename: ${file%.*}"
  echo "Extension: ${file##*.}"
}
# Call the function with a file
extract_filename_extension "a.b.js"

બાશમાં ફાઇલ મેનીપ્યુલેશન માટે વૈકલ્પિક પદ્ધતિઓનું અન્વેષણ

પહેલેથી ચર્ચા કરેલ પદ્ધતિઓ ઉપરાંત, ફાઇલનામો અને એક્સ્ટેંશનની હેરફેર કરવા માટે બાશમાં અન્ય ઉપયોગી તકનીકો છે. આવી એક પદ્ધતિનો ઉપયોગ કરવાનો સમાવેશ થાય છે basename અને dirname આદેશો basename પાથમાંથી ફાઇલનામ કાઢવા માટે વાપરી શકાય છે, જ્યારે dirname ડિરેક્ટરી પાથ પુનઃપ્રાપ્ત કરે છે. આ આદેશોને પરિમાણ વિસ્તરણ સાથે જોડવાથી ફાઇલનામો અને એક્સ્ટેંશનને અસરકારક રીતે અલગ કરી શકાય છે. ઉદાહરણ તરીકે, ઉપયોગ કરીને basename "$FILE" ".${FILE##*.}" ફાઇલનામમાંથી એક્સ્ટેંશન દૂર કરે છે. આ અભિગમ ખાસ કરીને ઉપયોગી છે જ્યારે ફક્ત ફાઇલનામોને બદલે સંપૂર્ણ ફાઇલ પાથ સાથે કામ કરો.

બીજી પદ્ધતિમાં ઉપયોગનો સમાવેશ થાય છે sed, ટેક્સ્ટને ફિલ્ટર કરવા અને રૂપાંતરિત કરવા માટે એક શક્તિશાળી સ્ટ્રીમ એડિટર. યોગ્ય નિયમિત અભિવ્યક્તિઓ રચીને, sed ફાઇલનામ અને એક્સ્ટેંશનને અલગ કરી શકે છે. ઉદાહરણ તરીકે, આદેશ echo "$FILE" | sed 's/\(.*\)\.\(.*\)/\1 \2/' ફાઇલનામ અને એક્સ્ટેંશનને વિભાજિત કરે છે, તેમને અલગ કેપ્ચર જૂથોમાં મૂકીને. આ ટેકનિક લવચીક છે અને જટિલ ફાઇલનામ સ્ટ્રક્ચરને હેન્ડલ કરી શકે છે. આ વધારાના સાધનો અને પદ્ધતિઓનું અન્વેષણ કરવાથી બાશમાં ફાઇલ ડેટાની હેરફેર કરવાની તમારી ક્ષમતાને વિસ્તૃત કરે છે, વિવિધ સ્ક્રિપ્ટીંગ દૃશ્યો માટે મજબૂત ઉકેલો પ્રદાન કરે છે.

બેશ ફાઇલ મેનીપ્યુલેશન પર વારંવાર પૂછાતા પ્રશ્નો

  1. નો હેતુ શું છે ${FILE%.*} આદેશ?
  2. તે છેલ્લી અવધિ પછી બધું છીનવીને ફાઇલનામમાંથી એક્સ્ટેંશનને દૂર કરે છે.
  3. કેવી રીતે કરે છે ${FILE##*.} આદેશ કામ?
  4. તે ફાઇલનામમાં છેલ્લા સમયગાળા પછી બધું લઈને એક્સ્ટેંશનને બહાર કાઢે છે.
  5. શું કરે awk -F. આપેલ સ્ક્રિપ્ટમાં કરવું?
  6. તે ફીલ્ડ વિભાજકને સમયગાળા માટે સુયોજિત કરે છે, ફાઇલનામને ભાગોમાં વિભાજિત કરવાની મંજૂરી આપે છે.
  7. શા માટે ઉપયોગ કરો NF-- માં awk સ્ક્રિપ્ટ?
  8. તે ફાઇલનામમાંથી એક્સ્ટેંશનને અસરકારક રીતે દૂર કરીને ફીલ્ડ્સની સંખ્યાને એકથી ઘટાડે છે.
  9. રેગ્યુલર એક્સપ્રેશન્સ ફાઇલનામ અને એક્સટેન્શનને કાઢવામાં કેવી રીતે મદદ કરે છે?
  10. તેઓ પેટર્ન મેચિંગ અને ગ્રૂપિંગ માટે પરવાનગી આપે છે, જે ફાઇલનામના વિવિધ ભાગોને અલગ કરી શકે છે.
  11. Bash માં કસ્ટમ ફંક્શનનો ઉપયોગ કરવાનો શું ફાયદો છે?
  12. કસ્ટમ ફંક્શન કોડની પુનઃઉપયોગિતા અને વાંચનક્ષમતાને વધારે છે, સ્ક્રિપ્ટોને વધુ મોડ્યુલર બનાવે છે.
  13. કેવી રીતે basename ફાઇલનામો સાથે મદદ?
  14. તે વૈકલ્પિક રીતે એક્સ્ટેંશનને દૂર કરીને, સંપૂર્ણ ફાઇલ પાથમાંથી ફાઇલનામને બહાર કાઢે છે.
  15. કરી શકે છે sed ફાઇલનામ મેનીપ્યુલેશન માટે ઉપયોગ કરી શકાય છે?
  16. હા, sed ફાઇલનામોના ભાગોને રૂપાંતરિત કરવા અને અલગ કરવા માટે નિયમિત અભિવ્યક્તિઓનો ઉપયોગ કરી શકે છે.

ફાઇલનામ અને એક્સટેન્શન એક્સટ્રેક્શન માટે સોલ્યુશન્સ રેપિંગ

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