2017-10-26 11 views
0

나는 모든 * .tex 파일의 상대 경로 목록을 얻어서 적절한 컴파일 목록을 얻으려고합니다. bash : 정렬 "find"출력 파일을 우선

나는 내 디렉토리에 다음과 같은 방법을 구조화 : 다른 섹션을 포함하는 각 * .tex 파일이 방법을 찾고 구조를 만드는 시조 폴더가 있습니다 따라서 다른이 각 폴더의 내부

./section1/ 
./section2/ 
./section1.tex 
./section2.tex 

을 *. tex 파일, 그리고 결국에는 다른 디렉토리를 사용하여 깨끗한 계층 구조를 유지합니다.

나는 다음과 같은 출력을 얻을하고 파일로 인쇄하고 싶습니다

가 ('의는 "toc.txt을 가정 해 봅시다) :

./section1.tex 

./section1/subsection1_1.tex 
./section1/subsection1_2.tex 
./section1/subsection1_3.tex 


./section2.tex 

./section2/subsection2_1.tex 
./section2/subsection2_2.tex 
./section2/subsection2_3.tex 

나는 다음과 같은 명령을 시도 :

find . -name '*.tex' -print | sort 

을하지만, 나는 정말로 모든 라인을 재정렬하여 수동으로 투쟁하고 싶지 않은 말을

./section1/subsection1_1.tex 
./section1/subsection1_2.tex 
./section1/subsection1_3.tex 
./section1.tex 
./section2/subsection2_1.tex 
./section2/subsection2_2.tex 
./section2/subsection2_3.tex 
./section2.tex 

: 그것은 나에게 다음과 같은 결과를 제공 이 토치 파일 가져 오기 ...

아이디어가 있으십니까? :-)

+0

'find. -name '* .tex'-print | sort'는'section1 /'앞에 알파벳순으로 있기 때문에 원하는 순서대로 결과를 주어야합니다. 따라서 붙여 넣은 결과는 나에게 불가능한 것처럼 보입니다 (알파벳 순서 논리를 무시함). – janos

답변

0

데이터 정렬 순서와 관련이 있습니다. 이것은 효과가있다.

find . -name '*.tex' -print | LC_COLLATE=C sort 

그리고, 그냥 재미를 위해,이 조금 미친 짓이야,하지만 당신은 단지 알파벳 높은 최대 정렬하고 파일 이름에없는 뭔가로 .를 교체하는 경우, 정렬 후, 변환, 역 그것은 작동합니다. 예 :

find . -name '*.tex' -print | sed -e 's/\./aaaa/g' | sort | sed -e 's/aaaa/\./g' 
+0

그것은 트릭을했다! 고맙습니다. 이제 모든 줄에 \ include {몇 가지를 넣어야합니다. (빠르고 쉽습니다), 잘 실행되어야합니다. –