2016-10-24 3 views
0

У меня есть каталог ввода, как это:Node JS скопировать только определенные файлы

resouces 
├── a.avi 
├── b.mp3 
├── c.pdf 
├── d.png 
└── ... 

Я пытаюсь создать следующий:

resouces 
├── audio 
    └── *.mp3 
├── video 
    └── *.avi 
└── ... 

Я использую НПМ модуль фс-EXTRA , Это мой код:

fse.ensureDir(resourcesOutputDirectory, (error) => { 
    if (error) { 
     console.err("An error ocurred creating the resources directory " + error.message); 
    } else { 
     fse.copy(resourcesInputDirectory, resourcesOutputDirectory, "/**/*.mp3", (err) => { 
      if (err) { 
       console.err("An error ocurred moving resource directory to XML exported directory " + err.message); 
      } else { 
       console.log("Files has been succesfully copied"); 
      } 
     }); 
    } 
}); 

Я не знаю, как правильно использовать параметр фильтра (третий аргумент в вызове копирования), чтобы скопировать только определенные файлы в мой выходной каталог.

Благодарим заранее!

+1

Чтение документации 'fse' заставляет меня поверить, хотя пример в документе явно ошибочен, что вместо' '/ **/*. Mp3' 'вы должны поместить функцию, возвращающую' true ' 'когда вы хотите скопировать файл, а' false', когда нет. Подобно '(file) => {return (file.endsWith ('. Mp3');}' – DrakaSAN

ответ

0

Looking at the docs не похоже, что вы можете использовать глобусы (как вы делаете в своем примере). Вы можете использовать функцию, возвращающую логическое или регулярное выражение.

Например, если вы хотите совместить все mp3 или avis, то вы можете сделать;

fse.copy(inDir, outDir, /.*(.mp3|.avi)$/, (err) => { }) 
+0

Это был мой первый подход, но он ничего не копировал. Y try {filter: {test: /.* (. mp3 | .avi) $ /}}, так как docs сказали: filter: Function или RegExp для фильтрации скопированных файлов. Если функция возвращает true для включения, false, чтобы исключить. Если RegExp аналогичен функции, где filter является filter.test. Но это не сработало :( – Abel

0

Наконец я получил его:

Как @Jivings сказал, мне просто нужно регулярное выражение в качестве фильтра. Но проблема в том, что метод copy из fse использует ncp, и теперь у него есть ошибка с фильтром. Использование copySync работает.

Смежные вопросы