பாஷில் கோப்பு பெயர் மற்றும் நீட்டிப்பை எவ்வாறு பிரிப்பது

பாஷில் கோப்பு பெயர் மற்றும் நீட்டிப்பை எவ்வாறு பிரிப்பது
பாஷில் கோப்பு பெயர் மற்றும் நீட்டிப்பை எவ்வாறு பிரிப்பது

அறிமுகம்:

பாஷில் உள்ள கோப்புகளுடன் பணிபுரியும் போது, ​​கோப்பு பெயரை அதன் நீட்டிப்பிலிருந்து அடிக்கடி பிரிக்க வேண்டியிருக்கும். ஒரு பொதுவான அணுகுமுறை `கட்` கட்டளையைப் பயன்படுத்துகிறது, ஆனால் இந்த முறை பல காலங்களைக் கொண்ட கோப்புப்பெயர்களில் தோல்வியடையும்.

எடுத்துக்காட்டாக, `a.b.js` போன்ற கோப்புப் பெயர் `a.b` மற்றும் `js` என்பதற்குப் பதிலாக `a` மற்றும் `b.js` ஆக தவறாகப் பிரிக்கப்படும். பைதான் `os.path.splitext()` உடன் எளிதான தீர்வை வழங்கினாலும், பைத்தானைப் பயன்படுத்துவது எப்போதும் மிகவும் திறமையான விருப்பமாக இருக்காது. இந்த கட்டுரை பாஷில் இந்த பணியை அடைவதற்கான சிறந்த முறைகளை ஆராய்கிறது.

கட்டளை விளக்கம்
${variable%.*} கோப்பு பெயரிலிருந்து நீட்டிப்பை அகற்ற அளவுரு விரிவாக்கம்.
${variable##*.} கோப்பு பெயரிலிருந்து நீட்டிப்பைப் பிரித்தெடுப்பதற்கான அளவுரு விரிவாக்கம்.
awk -F. கோப்பின் பெயரைப் பிரிக்கப் பயன்படும் புலம் பிரிப்பானை ஒரு காலத்திற்கு அமைக்கிறது.
OFS="." awk இல் வெளியீட்டு புலம் பிரிப்பான், நீட்டிப்பு இல்லாமல் கோப்பு பெயரை மறுகட்டமைக்கப் பயன்படுகிறது.
NF-- awk இல் புலங்களின் எண்ணிக்கையை ஒன்று குறைத்து, நீட்டிப்பை திறம்பட நீக்குகிறது.
${BASH_REMATCH} பாஷில் வழக்கமான வெளிப்பாட்டிலிருந்து போட்டிகளை வைத்திருக்கும் அணி.
local variable பாஷில் ஒரு செயல்பாட்டிற்குள் உள்ளூர் நோக்கத்துடன் ஒரு மாறியை அறிவிக்கிறது.

பாஷ் தீர்வுகளின் விரிவான முறிவு

வழங்கப்பட்ட ஸ்கிரிப்ட்கள் கோப்புப் பெயரையும் அதன் நீட்டிப்பையும் பாஷில் பிரிப்பதற்கு பல்வேறு முறைகளை வழங்குகின்றன. முதல் ஸ்கிரிப்ட் பாஷ் அளவுரு விரிவாக்கத்தைப் பயன்படுத்துகிறது. மாறி ${FILE%.*} கடைசி காலகட்டத்திலிருந்து சரத்தின் இறுதி வரை அனைத்தையும் அகற்றுவதன் மூலம் நீட்டிப்பை நீக்குகிறது ${FILE##*.} கடைசி காலத்திற்குப் பிறகு எல்லாவற்றையும் எடுத்து நீட்டிப்பைப் பிடிக்கிறது. பெரும்பாலான கோப்பு பெயர் கட்டமைப்புகளுக்கு இந்த முறை நேரடியானது மற்றும் திறமையானது. இரண்டாவது ஸ்கிரிப்ட் பயன்படுத்துகிறது awk, Unix போன்ற சூழல்களில் ஒரு சக்திவாய்ந்த உரை-செயலாக்கக் கருவி. பயன்படுத்தி புலம் பிரிப்பான் ஒரு காலத்திற்கு அமைப்பதன் மூலம் -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 ஐப் பயன்படுத்துதல்

ஆக் வித் பேஷ்

#!/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"

பாஷில் தனிப்பயன் செயல்பாட்டைப் பயன்படுத்துதல்

தனிப்பயன் செயல்பாடு கொண்ட பாஷ் ஸ்கிரிப்டிங்

#!/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. பாஷில் தனிப்பயன் செயல்பாட்டைப் பயன்படுத்துவதன் நன்மை என்ன?
  12. தனிப்பயன் செயல்பாடு குறியீடு மறுபயன்பாடு மற்றும் வாசிப்புத்திறனை மேம்படுத்துகிறது, ஸ்கிரிப்ட்களை மேலும் மட்டுப்படுத்துகிறது.
  13. எப்படி செய்கிறது basename கோப்புப் பெயர்களுக்கு உதவவா?
  14. இது முழு கோப்பு பாதையிலிருந்து கோப்பு பெயரை பிரித்தெடுக்கிறது, விருப்பமாக நீட்டிப்பை நீக்குகிறது.
  15. முடியும் sed கோப்பு பெயர் கையாளுதலுக்கு பயன்படுத்தப்படுமா?
  16. ஆம், sed கோப்புப் பெயர்களின் பகுதிகளை மாற்றவும் தனிமைப்படுத்தவும் வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்தலாம்.

கோப்பு பெயர் மற்றும் நீட்டிப்பு பிரித்தெடுப்புக்கான தீர்வுகளை மூடுதல்

முடிவில், பாஷில் கோப்புப் பெயர்கள் மற்றும் நீட்டிப்புகளைப் பிரித்தெடுப்பதை பல்வேறு முறைகள் மூலம் திறம்பட அடைய முடியும், ஒவ்வொன்றும் வெவ்வேறு தேவைகள் மற்றும் விருப்பங்களுக்கு ஏற்றது. அளவுரு விரிவாக்கம், awk, sed அல்லது தனிப்பயன் செயல்பாடுகளைப் பயன்படுத்தினாலும், இந்த நுட்பங்கள் நெகிழ்வான மற்றும் திறமையான தீர்வுகளை வழங்குகின்றன. இந்தக் கட்டளைகளைப் புரிந்துகொண்டு பயன்படுத்துவதன் மூலம், ஸ்கிரிப்ட்கள் கோப்புப் பெயர்களை பல காலங்கள் மற்றும் பிற சிக்கல்களுடன் பிழையின்றி கையாள முடியும் என்பதை உறுதி செய்கிறது.