참고
- 경로를 가져와서 Mui Tree View로 파일, 폴더 뷰 만들기
glob을 이용하면 파일이나 폴더 목록을 쉽게 찾을 수 있다.
여기서는 7.2.3 ver으로 glob을 설치해보자.
npm install glob@7.2.3
Express Setting을 참고해서 server.js를 다음과 같이 구축한다.
const express = require("express");
const app = express();
const useGlob = require("./routes/useGlob");
app.use("/useGlob", useGlob);
app.listen(3002, () =>
console.log("Node.js Server is running on port 3002...")
);
그리고 routes 폴더를 만든 후 useGlob.js를 만든다.
useGlob.js는 다음과 같다.
const express = require("express");
const router = express.Router();
const glob = require("glob");
router.get("/", (req, res) => {
let root = `D:\\github\\globfiles\\*`;
glob(root, function (error, findPath) {
if (error) {
console.log(error);
res.send({ error });
return;
}
console.log(findPath);
res.send({ findPath });
});
});
module.exports = router;
예시 파일
아래 압축 파일을 다운 받고 원하는 경로에 압축을 해제해보자.
여기서 경로는 D:\github\globfiles 이다.
하지만 윈도우 경로를 설정할 때는 \ 앞에 \ 를 추가해야 한다.
let root = `D:\\github\\globfiles\\*`;
vs code로 보면 파일과 폴더는 아래와 같다.
해당 경로에서 폴더와 파일 찾기
root가 아래인 경우 다음과 같다.
let root = `D:\\github\\globfiles\\*`;
크롬에서 아래 링크를 입력해서 테스트해보자.
http://localhost:3002/useGlob
그러면 해당 경로 'D:\github\globfiles' 의 폴더와 파일 경로를 알 수 있다.
해당 경로의 모든 파일과 폴더 찾기
경로를 아래와 같이 수정해보자. * 대신 ** 를 추가하였다.
let root = `D:\\github\\globfiles\\**`;
그러면 recursive하게 해당 폴더와 파일을 모두 찾는다.
특정 파일 찾기
아래와 같이 수정하면 json 파일을 모두 찾는다.
let root = `D:\\github\\globfiles\\**\\*.json`;
만약 globfiles에서 첫번째 폴더에서만 json 파일을 찾고 싶다면 다음과 같이 수정하면 된다.
let root = `D:\\github\\globfiles\\*\\*.json`;
파일 이름이 abc / ghi 로 시작하는 파일만 찾고 싶다면 다음과 같이 경로를 수정한다.
let root = `D:\\github\\globfiles\\**\\[ag][bh][ci]*.*`;
폴더만 찾기
파일을 제외한 폴더만 찾고 싶다면 코드를 아래와 같이 수정한다.
fs의 isDirectory 메서드를 이용하여 따로 구분하였다.
const express = require("express");
const router = express.Router();
const glob = require("glob");
const fs = require("fs");
router.get("/", (req, res) => {
let root = `D:\\github\\globfiles\\**`;
let folders = [];
glob(root, function (error, findPath) {
if (error) {
console.log(error);
res.send({ error });
return;
}
for(let path of findPath) {
if(fs.statSync(path).isDirectory())
folders.push(path);
}
console.log(folders);
res.send({ folders });
});
});
module.exports = router;
파일을 제외한 폴더의 경로만 나오는 것을 알 수 있다.
javascript로 단순히 테스트하고 싶다면 아래와 같이 server.js를 수정하자.
const glob = require("glob");
const fs = require("fs");
let root = `D:\\github\\globfiles\\**`;
let folders = [];
glob(root, function (error, findPath) {
if (error) {
console.log(error);
return;
}
for(let path of findPath) {
if(fs.statSync(path).isDirectory())
folders.push(path);
}
console.log(folders);
});
실행 결과는 다음과 같다.
$ node server.js
[
'D:/github/globfiles',
'D:/github/globfiles/abc1',
'D:/github/globfiles/abc1/abc2',
'D:/github/globfiles/abc1/abc2_2',
'D:/github/globfiles/abc1/abc2/abc3',
'D:/github/globfiles/def1',
'D:/github/globfiles/ghi1',
'D:/github/globfiles/ghi1/ghi2'
]
'개발 > Node JS' 카테고리의 다른 글
Node JS - POST로 데이터 전송 받기 (Process POST Data) (0) | 2023.06.19 |
---|---|
Node JS - 윈도우에서 nvm으로 node ver 관리하기 (Window Node Version Manager) (0) | 2023.05.22 |
Node JS - jest로 자바스크립트 코드 테스트 하기 (Jest, JavaScript Testing Framework) (0) | 2023.03.22 |
React - Node 서버 프록시 설정 (0) | 2021.10.28 |
Node js, React 파일 관리 시스템 만들기 (14) (9) | 2021.07.20 |
댓글