Расхождение между fs.readdirSync и linux LC_COLLATE = C sort? - PullRequest
0 голосов
/ 23 апреля 2019

Когда я использую команду

найти. тип F | LC_COLLATE = C sort

Меня встретил список каталогов / файлов

./angular-animate/README.md
./angular-animate/angular-animate.js
./angular-animate/angular-animate.min.js
./angular-animate/angular-animate.min.js.map
./angular-animate/bower.json
./angular-loader/.bower.json
./angular-loader/README.md
./angular-loader/angular-loader.js
./angular-loader/angular-loader.min.js
./angular-loader/angular-loader.min.js.map
./angular-loader/bower.json
./angular-mocks/.bower.json
./angular-mocks/README.md
./angular-mocks/angular-mocks.js
./angular-mocks/bower.json
./angular-resource/.bower.json
./angular-resource/README.md
./angular-resource/angular-resource.js
./angular-resource/angular-resource.min.js
./angular-resource/angular-resource.min.js.map
./angular-resource/bower.json
./angular-route/.bower.json
./angular-route/README.md
./angular-route/angular-route.js
./angular-route/angular-route.min.js
./angular-route/angular-route.min.js.map
./angular-route/bower.json
./angular-touch/.bower.json
./angular-touch/README.md
./angular-touch/angular-touch.js
./angular-touch/angular-touch.min.js
./angular-touch/angular-touch.min.js.map
./angular-touch/bower.json
./angular/.bower.json
./angular/README.md
./angular/angular-csp.css
./angular/angular-mocks.js
./angular/angular-sanitize.js
./angular/angular.js
./angular/angular.min.js
./angular/angular.min.js.gzip
./angular/angular.min.js.map
./angular/bower.json

Но когда я запускаю это

function getFileList(dir, filelist) {
    let files = fs.readdirSync(dir);
    let newFileList = filelist || [];
    files.forEach((file) => {
        const dirFile = `${dir}${file}`;
        if (fs.statSync(dirFile).isDirectory()) {
            newFileList = getFileList(`${dirFile}/`, newFileList);
        } else {
            newFileList.push(`${dir}${file}`);
        }
    });
    return newFileList;
}

код в том же каталоге, каталог ./angular/ находится вверху списка.

./angular/.bower.json
./angular/README.md
./angular/angular-csp.css
./angular/angular-mocks.js
./angular/angular-sanitize.js
./angular/angular.js
./angular/angular.min.js
./angular/angular.min.js.gzip
./angular/angular.min.js.map
./angular/bower.json
./angular-animate/README.md
./angular-animate/angular-animate.js
./angular-animate/angular-animate.min.js
./angular-animate/angular-animate.min.js.map
./angular-animate/bower.json
./angular-loader/.bower.json
./angular-loader/README.md
./angular-loader/angular-loader.js
./angular-loader/angular-loader.min.js
./angular-loader/angular-loader.min.js.map
./angular-loader/bower.json
./angular-mocks/.bower.json
./angular-mocks/README.md
./angular-mocks/angular-mocks.js
./angular-mocks/bower.json
./angular-resource/.bower.json
./angular-resource/README.md
./angular-resource/angular-resource.js
./angular-resource/angular-resource.min.js
./angular-resource/angular-resource.min.js.map
./angular-resource/bower.json
./angular-route/.bower.json
./angular-route/README.md
./angular-route/angular-route.js
./angular-route/angular-route.min.js
./angular-route/angular-route.min.js.map
./angular-route/bower.json
./angular-touch/.bower.json
./angular-touch/README.md
./angular-touch/angular-touch.js
./angular-touch/angular-touch.min.js
./angular-touch/angular-touch.min.js.map
./angular-touch/bower.json

Есть ли причина такой разницы в сортировке? Я также пытаюсь выяснить алгоритм для исправления различий на стороне узла вещей, кто-нибудь сталкивался с той же проблемой и обнаружил / разработал решение?

...