Homemade Source/Dataview snippets

[DataviewJS] 이름이 중복된 파일 찾기

반응형

옵시디언 Vault 내 중복된 파일을 찾고 목록 출력해주는 dataviewjs입니다.

예시

Dataviewjs Snippet

```dataviewjs
const data = dv.pages();

let countMap = {}; 

data.forEach((page) => {
  if (page.file && page.file.name && page.file.path) {
    const fileName = page.file.name;
    const filePath = page.file.path;

    if (!countMap.hasOwnProperty(fileName)) {
      countMap[fileName] = { count: 1, paths: [filePath] };
    } else {
      countMap[fileName].count += 1;
      countMap[fileName].paths.push(filePath);
    }
  }
});

let duplicateFound = false;
let duplicateCount = 0; 
Object.keys(countMap).forEach(key => {
  const element = countMap[key];
  if (element.count > 1) {
    duplicateCount += element.count - 1; 
    if (!duplicateFound) {
      dv.paragraph("==중복 파일이 있습니다==");
      duplicateFound = true;
    }
    dv.span(`《${key}》 파일이 ${element.count}개 발견되었습니다.`);
    const pathsToLink = element.paths.map(path => `[[${path}]]`);
    dv.list(pathsToLink);
  }
});

if (duplicateFound) {
  dv.paragraph(`총 ${duplicateCount}개의 중복 파일이 있습니다.`);
} else {
  dv.span("중복 파일이 없습니다.");
}
```

 

반응형