ಫೈಲ್ ಪಾಥ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಹುಡುಕಲು ಮತ್ತು ಫಿಲ್ಟರ್ ಮಾಡಲು ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಯನ್ನು ತಿಳಿಯಿರಿ. ಇದರ ಸಿಂಟ್ಯಾಕ್ಸ್, ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು ಹಾಗೂ ವಿವಿಧ ಭಾಷೆ/OSಗಳಲ್ಲಿನ ಉದಾಹರಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸಿ.
ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆ: ಫೈಲ್ ಪಾಥ್ ಪತ್ತೆ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ಗೆ ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ
ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಸಿಸ್ಟಮ್ ಆಡಳಿತದ ಜಗತ್ತಿನಲ್ಲಿ, ಫೈಲ್ಗಳನ್ನು ಸಮರ್ಥವಾಗಿ ನಿರ್ವಹಿಸುವುದು ಒಂದು ಮೂಲಭೂತ ಅವಶ್ಯಕತೆಯಾಗಿದೆ. ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಯು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗಳ ಆಧಾರದ ಮೇಲೆ ಫೈಲ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು ಫಿಲ್ಟರ್ ಮಾಡಲು ಶಕ್ತಿಶಾಲಿ ಮತ್ತು ಸಂಕ್ಷಿಪ್ತ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಲೇಖನವು ಗ್ಲೋಬಿಂಗ್ನ ಸೂಕ್ಷ್ಮತೆಗಳನ್ನು, ಅದರ ಸಿಂಟ್ಯಾಕ್ಸ್, ಬಳಕೆ ಮತ್ತು ವಿವಿಧ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿನ ಅನ್ವಯಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ.
ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆ ಎಂದರೇನು?
ಗ್ಲೋಬಿಂಗ್, "ಗ್ಲೋಬಲ್" ನ ಸಂಕ್ಷಿಪ್ತ ರೂಪ, ವೈಲ್ಡ್ಕಾರ್ಡ್ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್ ಹೆಸರುಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿ ಪಾಥ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಬಳಸುವ ತಂತ್ರವಾಗಿದೆ. ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಮತ್ತು ಸೂಕ್ಷ್ಮ ಮಾದರಿ ಹೊಂದಾಣಿಕೆ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡಿದರೆ, ಗ್ಲೋಬಿಂಗ್ ಸರಳ ಮತ್ತು ಅರ್ಥಗರ್ಭಿತ ಮಾದರಿ ವ್ಯಾಖ್ಯಾನಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟ ಮಾನದಂಡಗಳನ್ನು ಪೂರೈಸುವ ಫೈಲ್ಗಳು ಅಥವಾ ಡೈರೆಕ್ಟರಿಗಳ ಸೆಟ್ಗಳನ್ನು ಗುರುತಿಸಲು ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕಮಾಂಡ್-ಲೈನ್ ಇಂಟರ್ಫೇಸ್ಗಳು, ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.
ಮೂಲಭೂತ ಗ್ಲೋಬಿಂಗ್ ಸಿಂಟ್ಯಾಕ್ಸ್
ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಯ ತಿರುಳು ಅದರ ವೈಲ್ಡ್ಕಾರ್ಡ್ ಅಕ್ಷರಗಳಲ್ಲಿದೆ. ಈ ಅಕ್ಷರಗಳು ಫೈಲ್ ಅಥವಾ ಡೈರೆಕ್ಟರಿ ಹೆಸರಿನಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಅಕ್ಷರಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಶಾರ್ಟ್ಹ್ಯಾಂಡ್ ಸೂಚನೆಯನ್ನು ಒದಗಿಸುತ್ತವೆ. ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ವೈಲ್ಡ್ಕಾರ್ಡ್ಗಳು ಹೀಗಿವೆ:
*
(ನಕ್ಷತ್ರ ಚಿಹ್ನೆ): ಸೊನ್ನೆ ಅಥವಾ ಹೆಚ್ಚಿನ ಅಕ್ಷರಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ,*.txt
ಎಂಬುದು ".txt" ನೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುವ ಎಲ್ಲಾ ಫೈಲ್ಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.?
(ಪ್ರಶ್ನಾರ್ಥಕ ಚಿಹ್ನೆ): ನಿಖರವಾಗಿ ಒಂದು ಅಕ್ಷರಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.file?.txt
ಎಂಬುದು "file1.txt", "file2.txt" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಆದರೆ "file12.txt" ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.[]
(ಚೌಕಾಕಾರದ ಬ್ರಾಕೆಟ್ಗಳು): ಬ್ರಾಕೆಟ್ಗಳೊಳಗಿನ ಯಾವುದೇ ಒಂದೇ ಅಕ್ಷರಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.file[1-3].txt
ಎಂಬುದು "file1.txt", "file2.txt", ಮತ್ತು "file3.txt" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ನೀವು [a-z] ಅಥವಾ [A-Z] ನಂತಹ ಅಕ್ಷರ ಶ್ರೇಣಿಗಳನ್ನು ಸಹ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು.file[abc].txt
ಎಂಬುದು "filea.txt", "fileb.txt", ಮತ್ತು "filec.txt" ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.[^]
(ಚೌಕಾಕಾರದ ಬ್ರಾಕೆಟ್ಗಳೊಳಗೆ ಕೇರೆಟ್): ಬ್ರಾಕೆಟ್ಗಳೊಳಗಿಲ್ಲದ ಯಾವುದೇ ಒಂದೇ ಅಕ್ಷರಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.file[^1-3].txt
ಎಂಬುದು "file4.txt", "filea.txt", ಇತ್ಯಾದಿಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಆದರೆ "file1.txt", "file2.txt", ಅಥವಾ "file3.txt" ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.{}
(ಕರ್ಲಿ ಬ್ರೇಸ್ಗಳು - ಸಾರ್ವತ್ರಿಕವಾಗಿ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ): ಬಹು ಪರ್ಯಾಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.file{1,2,3}.txt
ಎಂಬುದುfile1.txt file2.txt file3.txt
ಗೆ ಸಮಾನವಾಗಿದೆ. ಇದನ್ನುimage.{png,jpg,gif}
ನಂತಹ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಮಾದರಿಗಳಿಗಾಗಿ ಸಹ ಬಳಸಬಹುದು.
ಈ ಮೂಲ ವೈಲ್ಡ್ಕಾರ್ಡ್ಗಳನ್ನು ಸಂಯೋಜಿಸಿ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಮಾದರಿಗಳನ್ನು ರಚಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, *.log.*
ಎಂಬುದು ".log" ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುವ ಯಾವುದೇ ಫೈಲ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ನಂತರ ಯಾವುದೇ ಇತರ ವಿಸ್ತರಣೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ.
ವಿವಿಧ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಗ್ಲೋಬಿಂಗ್
ಗ್ಲೋಬಿಂಗ್ನ ಮೂಲ ಪರಿಕಲ್ಪನೆಗಳು ಸ್ಥಿರವಾಗಿದ್ದರೂ, ನಿರ್ದಿಷ್ಟ ಅನುಷ್ಠಾನಗಳು ಮತ್ತು ಸಿಂಟ್ಯಾಕ್ಸ್ ವಿವಿಧ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಾದ್ಯಂತ ಸ್ವಲ್ಪ ಬದಲಾಗಬಹುದು.
ಪೈಥಾನ್
ಪೈಥಾನ್ ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು glob
ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.
import glob
# Find all .txt files in the current directory
txt_files = glob.glob("*.txt")
print(txt_files)
# Find all .jpg files in a subdirectory called 'images'
jpg_files = glob.glob("images/*.jpg")
print(jpg_files)
# Recursively find all .py files in the current directory and its subdirectories
py_files = glob.glob("**/*.py", recursive=True)
print(py_files)
glob
ಮಾಡ್ಯೂಲ್ನ glob()
ಕಾರ್ಯವು ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಂಡು, ಹೊಂದಾಣಿಕೆಯ ಫೈಲ್ ಪಾಥ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. recursive=True
ಆರ್ಗ್ಯುಮೆಂಟ್ ಉಪ-ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಟ್ರಾವರ್ಸ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಪೈಥಾನ್ 3.5 ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ.
ಉದಾಹರಣೆ: ಅಂತರರಾಷ್ಟ್ರೀಯಕರಣ (i18n) ಫೈಲ್ಗಳು
ಭಾಷಾ ಕೋಡ್ ಮೂಲಕ ಸಂಘಟಿತವಾಗಿರುವ ಅನುವಾದ ಫೈಲ್ಗಳನ್ನು ಹೊಂದಿರುವ ಯೋಜನೆಯನ್ನು ಊಹಿಸಿ, ಉದಾಹರಣೆಗೆ, en.json
, fr.json
, de.json
. ಎಲ್ಲಾ ಅನುವಾದ ಫೈಲ್ಗಳನ್ನು ಹುಡುಕಲು, ನೀವು ಇದನ್ನು ಬಳಸಬಹುದು: glob.glob("*.json")
. ಫೈಲ್ ಹೆಸರುಗಳಲ್ಲಿ ಬಳಸಿದ ನಿರ್ದಿಷ್ಟ ಭಾಷಾ ಕೋಡ್ಗಳನ್ನು ಲೆಕ್ಕಿಸದೆ ಇದು ಜಾಗತಿಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ (Node.js)
Node.js ನಲ್ಲಿ, glob
ಪ್ಯಾಕೇಜ್ (npm ಮೂಲಕ ಲಭ್ಯವಿದೆ) ಗ್ಲೋಬಿಂಗ್ ಕಾರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ.
const glob = require("glob");
// Find all .js files in the 'src' directory
glob("src/**/*.js", (err, files) => {
if (err) {
console.error(err);
return;
}
console.log(files);
});
Node.js ನಲ್ಲಿನ glob()
ಕಾರ್ಯವು ಅಸಮಕಾಲಿಕವಾಗಿದೆ ಮತ್ತು ದೋಷ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ಫೈಲ್ ಪಾಥ್ಗಳ ಅರೇಯನ್ನು ಸ್ವೀಕರಿಸುವ ಕಾಲ್ಬ್ಯಾಕ್ ಕಾರ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. src/**/*.js
ಮಾದರಿಯು src
ಡೈರೆಕ್ಟರಿ ಮತ್ತು ಅದರ ಉಪ-ಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿನ ಎಲ್ಲಾ .js
ಫೈಲ್ಗಳಿಗಾಗಿ ಪುನರಾವರ್ತಿತವಾಗಿ ಹುಡುಕುತ್ತದೆ.
ಉದಾಹರಣೆ: ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು
ಅನೇಕ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಯೋಜನೆಗಳು .eslintrc.js
ಅಥವಾ webpack.config.js
ನಂತಹ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಈ ಫೈಲ್ಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪತ್ತೆಹಚ್ಚಲು ನೀವು ಗ್ಲೋಬ್ ಅನ್ನು ಬಳಸಬಹುದು: glob("*.config.js")
.
ಜಾವಾ
ಜಾವಾ 7 java.nio.file
ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಪರಿಚಯಿಸಿತು, ಇದು FileSystem.getPathMatcher()
ವಿಧಾನದ ಮೂಲಕ ಗ್ಲೋಬಿಂಗ್ಗೆ ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿದೆ.
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class GlobExample {
public static void main(String[] args) throws IOException {
Path startingDir = Paths.get(".");
String pattern = "glob:**/*.java"; // Recursive search for Java files
PathMatcher matcher = FileSystems.getDefault().getPathMatcher(pattern);
Files.walkFileTree(startingDir, new SimpleFileVisitor() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (matcher.matches(file)) {
System.out.println("Found: " + file);
}
return FileVisitResult.CONTINUE;
}
});
}
}
ಈ ಉದಾಹರಣೆಯು ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಟ್ರಾವರ್ಸ್ ಮಾಡಲು Files.walkFileTree()
ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಫೈಲ್ ನಿರ್ದಿಷ್ಟ ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ಗೆ ಹೊಂದಿಕೆಯಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು PathMatcher
ಅನ್ನು ಬಳಸುತ್ತದೆ. glob:**/*.java
ಪ್ಯಾಟರ್ನ್ ಎಲ್ಲಾ .java
ಫೈಲ್ಗಳಿಗಾಗಿ ಪುನರಾವರ್ತಿತವಾಗಿ ಹುಡುಕುತ್ತದೆ.
ಉದಾಹರಣೆ: ಪ್ಲಗಿನ್ ಫೈಲ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದು
ಒಂದು ನಿರ್ದಿಷ್ಟ ಡೈರೆಕ್ಟರಿಯಿಂದ ಪ್ಲಗಿನ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಊಹಿಸಿ. ಪ್ಲಗಿನ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ಎಲ್ಲಾ JAR ಫೈಲ್ಗಳನ್ನು ಹುಡುಕಲು ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಬಳಸಬಹುದು: glob:plugins/*.jar
.
ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (ಬಾಷ್)
ಗ್ಲೋಬಿಂಗ್ ಬಾಷ್ನಂತಹ ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಆಳವಾಗಿ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟಿದೆ.
#!/bin/bash
# Find all .txt files in the current directory
for file in *.txt;
do
echo "Found file: $file"
done
# Find all files starting with 'report' in the 'logs' directory
for file in logs/report*;
do
echo "Found report: $file"
done
#Recursively find all files ending in '.conf'
shopt -s globstar #Enable globstar
for file in **/*.conf;
do
echo "Found conf file: $file"
done
ಬಾಷ್ನಲ್ಲಿ, ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು ಕಮಾಂಡ್ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು ಶೆಲ್ ನೇರವಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ. globstar
ಆಯ್ಕೆಯು (shopt -s globstar
) **
ಪ್ಯಾಟರ್ನ್ನೊಂದಿಗೆ ಪುನರಾವರ್ತಿತ ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ: ಸಿಸ್ಟಮ್ ಆಡಳಿತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಲಾಗ್ ಫೈಲ್ಗಳು, ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳು ಅಥವಾ ಇತರ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳಲ್ಲಿ ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕಕ್ಕಿಂತ ಹಳೆಯದಾದ ಎಲ್ಲಾ ತಾತ್ಕಾಲಿಕ ಫೈಲ್ಗಳನ್ನು ಅಳಿಸುವುದರಿಂದ ಸಂಬಂಧಿತ ಫೈಲ್ಗಳನ್ನು ಗುರುತಿಸಲು ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಒಳಗೊಂಡಿರಬಹುದು.
ಸುಧಾರಿತ ಗ್ಲೋಬಿಂಗ್ ತಂತ್ರಗಳು
ವಿಸ್ತೃತ ಗ್ಲೋಬಿಂಗ್ (ಬಾಷ್)
ಬಾಷ್ ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡುವ ವಿಸ್ತೃತ ಗ್ಲೋಬಿಂಗ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು shopt
ಕಮಾಂಡ್ ಅನ್ನು ಬಳಸಿ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಾಗಿದೆ.
#!/bin/bash
shopt -s extglob # Enable extended globbing
# Match files that end in .txt but are NOT named 'important.txt'
for file in !(important).txt;
do
echo "Found file: $file"
done
# Match files that start with 'data' followed by one or more digits
for file in data+([0-9]).txt;
do
echo "Found file: $file"
done
ಕೆಲವು ಉಪಯುಕ್ತ ವಿಸ್ತೃತ ಗ್ಲೋಬಿಂಗ್ ಮಾದರಿಗಳು:
?(pattern)
: ಪ್ಯಾಟರ್ನ್ನ ಸೊನ್ನೆ ಅಥವಾ ಒಂದು ಘಟನೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.*(pattern)
: ಪ್ಯಾಟರ್ನ್ನ ಸೊನ್ನೆ ಅಥವಾ ಹೆಚ್ಚಿನ ಘಟನೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.+(pattern)
: ಪ್ಯಾಟರ್ನ್ನ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಘಟನೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.@(pattern1|pattern2|pattern3)
: ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಾದರಿಗಳಲ್ಲಿ ಒಂದಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.!(pattern)
: ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪ್ಯಾಟರ್ನ್ ಹೊರತುಪಡಿಸಿ ಯಾವುದಕ್ಕಾದರೂ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ.
ಇತರ ಪರಿಕರಗಳೊಂದಿಗೆ ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಸಂಯೋಜಿಸುವುದು
ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಫೈಲ್ ಮ್ಯಾನಿಪುಲೇಷನ್ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಇತರ ಕಮಾಂಡ್-ಲೈನ್ ಪರಿಕರಗಳೊಂದಿಗೆ ಸುಲಭವಾಗಿ ಸಂಯೋಜಿಸಬಹುದು.
# Find all .txt files and pipe the list to grep to search for the word 'error'
ls *.txt | grep "error"
# Use find with globbing to delete all .tmp files older than 7 days
find . -name "*.tmp" -mtime +7 -delete
ಮೊದಲ ಉದಾಹರಣೆಯು ಎಲ್ಲಾ .txt
ಫೈಲ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಲು ls
ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ನಂತರ "error" ಪದವನ್ನು ಹೊಂದಿರುವ ಸಾಲುಗಳನ್ನು ಹುಡುಕಲು ಔಟ್ಪುಟ್ ಅನ್ನು grep
ಗೆ ಪೈಪ್ ಮಾಡುತ್ತದೆ. ಎರಡನೇ ಉದಾಹರಣೆಯು find
ಅನ್ನು -name
ಆಯ್ಕೆಯೊಂದಿಗೆ ಎಲ್ಲಾ .tmp
ಫೈಲ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು 7 ದಿನಗಳಿಗಿಂತ ಹಳೆಯದಾದ ಫೈಲ್ಗಳನ್ನು ಅಳಿಸುವ ಮೊದಲು ಫಿಲ್ಟರ್ ಮಾಡಲು -mtime
ಆಯ್ಕೆಯನ್ನು ಬಳಸುತ್ತದೆ.
ಗ್ಲೋಬಿಂಗ್ Vs. ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು
ಗ್ಲೋಬಿಂಗ್ ಮತ್ತು ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು ಎರಡನ್ನೂ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಬಳಸಲಾಗಿದ್ದರೂ, ಅವುಗಳ ಸಂಕೀರ್ಣತೆ ಮತ್ತು ಸಾಮರ್ಥ್ಯಗಳಲ್ಲಿ ಅವು ಗಮನಾರ್ಹವಾಗಿ ಭಿನ್ನವಾಗಿವೆ.
ಗ್ಲೋಬಿಂಗ್:
- ಸರಳ ಮತ್ತು ಅರ್ಥಗರ್ಭಿತ ಸಿಂಟ್ಯಾಕ್ಸ್.
- ಪ್ರಾಥಮಿಕವಾಗಿ ಫೈಲ್ ಹೆಸರು ಹೊಂದಾಣಿಕೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
- ಸೀಮಿತ ವೈಲ್ಡ್ಕಾರ್ಡ್ ಅಕ್ಷರಗಳ ಸೆಟ್.
- ಸರಳ ಮಾದರಿಗಳಿಗೆ ವೇಗದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ.
ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು:
- ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಸಿಂಟ್ಯಾಕ್ಸ್, ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಮೆಟಾಕ್ಯಾರೆಕ್ಟರ್ಗಳು ಮತ್ತು ಕ್ವಾಂಟಿಫೈಯರ್ಗಳೊಂದಿಗೆ.
- ಫೈಲ್ ಹೆಸರುಗಳಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ ಯಾವುದೇ ಪಠ್ಯದಲ್ಲಿ ಮಾದರಿಗಳನ್ನು ಹೊಂದಿಸಲು ಬಳಸಬಹುದು.
- ಸಂಕೀರ್ಣ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆ ಸನ್ನಿವೇಶಗಳಿಗೆ ಶಕ್ತಿಶಾಲಿ ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ.
- ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ಎಂಜಿನ್ನ ಓವರ್ಹೆಡ್ನಿಂದಾಗಿ ಸರಳ ಮಾದರಿಗಳಿಗೆ ಗ್ಲೋಬಿಂಗ್ಗಿಂತ ನಿಧಾನವಾಗಿರಬಹುದು.
ಸಾಮಾನ್ಯವಾಗಿ, ಸರಳ ಫೈಲ್ ಹೆಸರು ಹೊಂದಾಣಿಕೆ ಕಾರ್ಯಗಳಿಗೆ ಗ್ಲೋಬಿಂಗ್ ಸೂಕ್ತವಾಗಿದೆ, ಆದರೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಪಠ್ಯ ಸಂಸ್ಕರಣೆ ಮತ್ತು ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆ ಸನ್ನಿವೇಶಗಳಿಗೆ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು ಉತ್ತಮವಾಗಿವೆ.
ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಯನ್ನು ಬಳಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
- ನಿರ್ದಿಷ್ಟವಾಗಿರಿ: ಅನಪೇಕ್ಷಿತ ಫೈಲ್ಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡುವ ಅತಿಯಾದ ವಿಶಾಲ ಮಾದರಿಗಳನ್ನು ತಪ್ಪಿಸಿ. ಉದಾಹರಣೆಗೆ,
*
ಬದಲಿಗೆ,*.txt
ಅನ್ನು ಬಳಸಿ ಕೇವಲ ಪಠ್ಯ ಫೈಲ್ಗಳನ್ನು ಮಾತ್ರ ಗುರಿಯಾಗಿಸಿ. - ಪುನರಾವರ್ತನೆಯನ್ನು ಎಚ್ಚರಿಕೆಯಿಂದ ಬಳಸಿ: ಪುನರಾವರ್ತಿತ ಗ್ಲೋಬಿಂಗ್ (ಉದಾಹರಣೆಗೆ,
**/*
) ಸಂಪನ್ಮೂಲ-ತೀವ್ರವಾಗಿರಬಹುದು, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಡೈರೆಕ್ಟರಿ ರಚನೆಗಳಲ್ಲಿ. ಪುನರಾವರ್ತಿತ ಮಾದರಿಗಳನ್ನು ಬಳಸುವ ಮೊದಲು ಕಾರ್ಯಕ್ಷಮತೆಯ ಪರಿಣಾಮಗಳನ್ನು ಪರಿಗಣಿಸಿ. - ನಿಮ್ಮ ಮಾದರಿಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ: ಗ್ಲೋಬ್ ಮಾದರಿಗಳ ಆಧಾರದ ಮೇಲೆ ಫೈಲ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸುವ ಅಥವಾ ಅಳಿಸುವ ಕಮಾಂಡ್ಗಳನ್ನು ಚಲಾಯಿಸುವ ಮೊದಲು, ಅವು ಉದ್ದೇಶಿತ ಫೈಲ್ಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮಾದರಿಗಳನ್ನು ಪರೀಕ್ಷಿಸಿ. ಫಲಿತಾಂಶಗಳನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಲು
ls
ಅಥವಾecho
ಅನ್ನು ಬಳಸಿ. - ಪ್ಲಾಟ್ಫಾರ್ಮ್-ನಿರ್ದಿಷ್ಟ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ: ವಿಭಿನ್ನ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ಶೆಲ್ಗಳಾದ್ಯಂತ ಗ್ಲೋಬಿಂಗ್ ಅನುಷ್ಠಾನಗಳಲ್ಲಿನ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳ ಬಗ್ಗೆ ತಿಳಿದಿರಲಿ. ಉದಾಹರಣೆಗೆ, ಕೇಸ್ ಸೆನ್ಸಿಟಿವಿಟಿ ಬದಲಾಗಬಹುದು.
- ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ತಪ್ಪಿಸಿ: ನೀವು ಅಕ್ಷರಶಃ ವೈಲ್ಡ್ಕಾರ್ಡ್ ಅಕ್ಷರಕ್ಕೆ (ಉದಾಹರಣೆಗೆ, ನಕ್ಷತ್ರ ಚಿಹ್ನೆ) ಹೊಂದಾಣಿಕೆ ಮಾಡಬೇಕಾದರೆ, ಅದನ್ನು ಬ್ಯಾಕ್ಸ್ಲಾಶ್ (
\*
) ಬಳಸಿ ತಪ್ಪಿಸಿ.
ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
- ವೆಬ್ ಅಭಿವೃದ್ಧಿ: ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ ಆಸ್ತಿಗಳ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಎಲ್ಲಾ ಇಮೇಜ್ ಫೈಲ್ಗಳನ್ನು (
.jpg
,.png
,.gif
) ಕಂಡುಹಿಡಿಯುವುದು. - ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ:
data_2023-10-26.log
,data_2023-10-27.log
, ಇತ್ಯಾದಿ ಹೆಸರುಗಳೊಂದಿಗೆ ಲಾಗ್ ಫೈಲ್ಗಳ ಸರಣಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು. - ಸಿಸ್ಟಮ್ ಆಡಳಿತ: ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕಕ್ಕಿಂತ ಹಳೆಯದಾದ ಫೈಲ್ಗಳನ್ನು ಗುರುತಿಸಿ ಮತ್ತು ಆರ್ಕೈವ್ ಮಾಡುವ ಮೂಲಕ ಲಾಗ್ ಫೈಲ್ಗಳನ್ನು ತಿರುಗಿಸುವುದು.
- ಬಿಲ್ಡ್ ಆಟೊಮೇಷನ್: ಬಿಲ್ಡ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಫೈಲ್ಗಳು ಅಥವಾ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಸೇರಿಸುವುದು ಅಥವಾ ಹೊರಗಿಡುವುದು.
- ಕೋಡ್ ಜನನ: ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗಳ ಆಧಾರದ ಮೇಲೆ ಕೋಡ್ ರಚಿಸಲು ಟೆಂಪ್ಲೇಟ್ ಫೈಲ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು.
- ಕಾನ್ಫಿಗರೇಶನ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್: ಯೋಜನೆಯ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಎಲ್ಲಾ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು.
ಭದ್ರತಾ ಪರಿಗಣನೆಗಳು
ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಬಳಸುವಾಗ, ಸಂಭಾವ್ಯ ಭದ್ರತಾ ಅಪಾಯಗಳ ಬಗ್ಗೆ ಎಚ್ಚರ ವಹಿಸುವುದು ನಿರ್ಣಾಯಕ. ಗ್ಲೋಬ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಅನ್ನು ಬಳಸಿದರೆ, ಅದು ಅನಪೇಕ್ಷಿತ ಫೈಲ್ ಪ್ರವೇಶ ಅಥವಾ ಮಾರ್ಪಾಡಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಈ ಅಪಾಯಗಳನ್ನು ತಗ್ಗಿಸಲು:
- ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಅನ್ನು ಸ್ಯಾನಿಟೈಜ್ ಮಾಡಿ: ದುರುದ್ದೇಶಪೂರಿತ ಮಾದರಿಗಳನ್ನು ತಡೆಯಲು ಗ್ಲೋಬ್ ಮಾದರಿಗಳಲ್ಲಿ ಬಳಸುವ ಮೊದಲು ಯಾವಾಗಲೂ ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಿ ಮತ್ತು ಸ್ಯಾನಿಟೈಜ್ ಮಾಡಿ.
- ಪ್ರವೇಶವನ್ನು ಮಿತಿಗೊಳಿಸಿ: ಗ್ಲೋಬಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಡೆಸುವ ಪ್ರಕ್ರಿಯೆಗೆ ಫೈಲ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಮತ್ತು ಮಾರ್ಪಡಿಸಲು ಕನಿಷ್ಠ ಅಗತ್ಯ ಸವಲತ್ತುಗಳು ಮಾತ್ರ ಇರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
- ಸುರಕ್ಷಿತ ಪರ್ಯಾಯಗಳನ್ನು ಬಳಸಿ: ಭದ್ರತೆಯು ಪ್ರಮುಖವಾಗಿರುವ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಕೇವಲ ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಅವಲಂಬಿಸುವ ಬದಲು ಹೆಚ್ಚು ನಿಯಂತ್ರಿತ ಫೈಲ್ ಸಿಸ್ಟಮ್ API ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
ತೀರ್ಮಾನ
ಗ್ಲೋಬ್ ಪ್ಯಾಟರ್ನ್ ಹೊಂದಾಣಿಕೆಯು ಫೈಲ್ ಪಾಥ್ ಪತ್ತೆ ಮತ್ತು ಫಿಲ್ಟರಿಂಗ್ಗೆ ಶಕ್ತಿಶಾಲಿ ಮತ್ತು ಬಹುಮುಖ ಸಾಧನವಾಗಿದೆ. ಇದರ ಸರಳ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು ವ್ಯಾಪಕ ಲಭ್ಯತೆಯು ಡೆವಲಪರ್ಗಳು, ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಮತ್ತು ಫೈಲ್ಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯಾರಿಗಾದರೂ ಇದು ಅಗತ್ಯ ಕೌಶಲ್ಯವಾಗಿದೆ. ಮೂಲ ಪರಿಕಲ್ಪನೆಗಳು, ಸಿಂಟ್ಯಾಕ್ಸ್ ವ್ಯತ್ಯಾಸಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿಮ್ಮ ಕೆಲಸದ ಹರಿವನ್ನು ಸುಗಮಗೊಳಿಸಲು ಮತ್ತು ಫೈಲ್ ನಿರ್ವಹಣೆ ಕಾರ್ಯಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ನೀವು ಗ್ಲೋಬಿಂಗ್ ಅನ್ನು ಬಳಸಬಹುದು. ನೀವು ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬರೆಯುತ್ತಿರಲಿ, ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿರಲಿ ಅಥವಾ ಸರ್ವರ್ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತಿರಲಿ, ಗ್ಲೋಬಿಂಗ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಸಂಕ್ಷಿಪ್ತ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುತ್ತದೆ.