Удалить скрытые файлы из списка каталогов в Racket - PullRequest
2 голосов
/ 04 февраля 2020

В Racket я могу получить список всех файлов в текущем каталоге с помощью функции directory-list:

> (directory-list)
'(#<path:.git>
  #<path:.gitignore>
  #<path:README>)

Однако, если я запускаю ls в командной строке, по умолчанию скрытие всех файлов, начиная с .

$ ls
README

Можно ли отфильтровать результат directory-list, чтобы показать только файлы, которые не скрыты?

1 Ответ

4 голосов
/ 04 февраля 2020

Библиотека file/glob по умолчанию игнорирует точечные файлы. Вы можете переопределить это поведение с помощью аргумента ключевого слова.

$ ls
README
$ racket
Welcome to Racket v7.6.0.9.
> (require file/glob)
> (glob "*")
'(#<path:/tmp/dir/README>)
> (glob "*" #:capture-dotfiles? #t)
'(#<path:/tmp/dir/.git> #<path:/tmp/dir/.gitignore> #<path:/tmp/dir/README>)

РЕДАКТИРОВАТЬ: Если вы ищете только текущий каталог, вы можете получить относительные пути, используя find-relative-path:

> (map (lambda (x) (find-relative-path (current-directory) x)) (glob "*"))
'(#<path:.git> #<path:.gitignore> #<path:README>)
...