エンタメ系企業の社内もろもろを担当しているakibinです。
最近、Shuta Hasunuma Philharmonic Orchestra / HOLIDAY feat. Moeka Shiotsukaにハマってます。春らしくて春が待ち遠しくなりますよ寒いの飽きたよいいかげんにしてほしい。
概要
Node.jsで特定の値が含まれているJSONファイルをピックアップして、他のディレクトリにコピーしました。
なぜかと言うと、Markdown形式のWikiアプリから他のアプリに移行するのに、特定の値から移行したいJSONファイルを振り分ける必要があったからなのです。
そのもの
今回はJSONファイルのgroupsという項目の中のIDが"1111"だった以下のような場合にコピーする感じです。
"groups":[{"id":1111,"name":"ファイルが所属していたグループ名"}]
'use strict';
// ターゲットのグループIDを指定
const targetGroup = "1111";
// 全ファイル名を取得
const fs = require("fs");
const dirPath = "./全jsonファイルの保存先";
const allDirents = fs.readdirSync(dirPath, { withFileTypes: true });
const fileNames = allDirents.filter(dirent => dirent.isFile()).map(({ name }) => name);
//ファイル数取得
const allFilesNum = fileNames.length;
//ターゲット数カウント(無くても良い)
var targetGroupNum = 0;
//カウンター
var counter = 0;
//コピー先
var copyFileDir = "./jsonファイルのコピー先";
for (let counter = 0; counter < allFilesNum; counter++) {
var fileData = require(dirPath + "/" + fileNames[counter]);
var fileGroups = fileData["groups"][0]; //groupsの項目がグループIDの1つであれば、これだけでグループIDを取得可能
// groupsに値の有無確認、ある場合はグループIDを取得
var notValue = undefined;
if (fileGroups != notValue){
var groupId = fileGroups.id;
// ファイルのグループIDがターゲットのIDだった場合の処理
if (groupId == targetGroup){
//ターゲットグループ数をカウント(無くても良い)
var targetGroupNum = ++targetGroupNum;
console.log(targetGroupNum);
//ファイルのコピー
fs.copyFile(dirPath + "/" + fileNames[counter], copyFileDir + "/" + fileNames[counter], (err) => {
if (err) throw err;
console.log('ファイルをコピーしました');
});
}
}
}
以上!