エンタメ系企業の社内もろもろを担当している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を指定consttargetGroup="1111";// 全ファイル名を取得constfs=require("fs");constdirPath="./全jsonファイルの保存先";constallDirents=fs.readdirSync(dirPath,{withFileTypes:true});constfileNames=allDirents.filter(dirent=>dirent.isFile()).map(({name})=>name);//ファイル数取得constallFilesNum=fileNames.length;//ターゲット数カウント(無くても良い)vartargetGroupNum=0;//カウンターvarcounter=0;//コピー先varcopyFileDir="./jsonファイルのコピー先";for(letcounter=0;counter<allFilesNum;counter++){varfileData=require(dirPath+"/"+fileNames[counter]);varfileGroups=fileData["groups"][0];//groupsの項目がグループIDの1つであれば、これだけでグループIDを取得可能// groupsに値の有無確認、ある場合はグループIDを取得varnotValue=undefined;if(fileGroups!=notValue){vargroupId=fileGroups.id;// ファイルのグループIDがターゲットのIDだった場合の処理if(groupId==targetGroup){//ターゲットグループ数をカウント(無くても良い)vartargetGroupNum=++targetGroupNum;console.log(targetGroupNum);//ファイルのコピーfs.copyFile(dirPath+"/"+fileNames[counter],copyFileDir+"/"+fileNames[counter],(err)=>{if(err)throwerr;console.log('ファイルをコピーしました');});}}}