특정 디렉터리의 파일을 반복합니다.

특정 디렉터리의 파일을 반복합니다.

내 패키지 중 하나를 향상시키려고 시도하는 동안 expl3에서 디렉터리의 파일 목록을 반복하는 것이 가능한지 궁금했습니다( l3interfaces.pdfexpl3에 일부 IO 기능이 있다는 내용을 읽었지만 디렉터리를 검색할 수 없는 것 같습니다).

사용 사례는 다음과 같습니다. 주 문서가 하나 있습니다. 여기에는 외부 응용 프로그램으로 생성되어 경로 외부 디렉터리에 저장된 일부 특수 파일이 포함됩니다.

그래서 질문은: expl3"디렉토리 스캐너"(디렉토리만 지정하고 싶습니다)는 어떻게 보일까요, 아니면 이 목적을 위해 Lua를 사용해야 합니까?

답변1

expl3tex로 작성되었으므로 tex가 제공하는 기능으로 제한되므로 -shell-escape또는 luatex를 사용하지 않으면 이 작업을 수행할 수 없습니다.

ls *.tex예를 들어 이것은 운영 체제에서 생성되는 경우 현재 디렉토리에 있는 tex 파일 목록을 조판합니다 . (아마도 dir *.tex윈도우에서)

\documentclass{article}

\newread\zzz

\begin{document}

\def\zzpar{\par}

\openin\zzz="|ls *tex"
\loop
\read\zzz to \tmp
\ifx\tmp\zzpar\else
\par[\expandafter\detokenize\expandafter{\tmp}]%
\fi
\ifeof\zzz\else
\repeat

\end{document}

실행하면 다음과 같은 105페이지가 표시됩니다.

여기에 이미지 설명을 입력하세요

답변2

TeX Live 2017에서는 제한된 셸에서도 실행되는 TeXOSQuery의 향상된 버전이 출시됩니다.

\documentclass{article}
\usepackage{texosquery}

\TeXOSQuery{\result}{-i ; .}

\show\result

\stop

이 출력

> \result=macro:
->dl.log;dl.tex;install-tl;LICENSE.CTAN;LICENSE.TL;osq.log;osq.tex;qrp.log;qrp.
pdf;qrp.tex;query.aux;query.log;query.pdf;query.tex;rand.log;rand.pdf;rand.tex;
release-texlive.txt;texmf-dist;texnician.log;texnician.tex;texosquery.cfg;texpu
t.log;tlpkg;tt.aux;tt.idx;tt.ilg;tt.ind;tt.log;tt.pdf;tt.tex.

그런 다음 매크로를 구성 요소로 분할하기 위한 표준 방법을 사용할 수 있습니다 \result.

보안상의 이유로 액세스할 수 있는 디렉터리에는 제한이 있지만 작업 디렉터리의 하위 디렉터리는 안전해야 합니다.

관련 정보