일치하는(그러나 동일하지는 않은) 결말을 가진 폴더 목록을 만듭니다.

일치하는(그러나 동일하지는 않은) 결말을 가진 폴더 목록을 만듭니다.

.ctpre 또는 .ctpost(예: "15.ctpre")로 끝나는 폴더와 기타 파일/폴더가 포함된 디렉터리가 있습니다. 앞 폴더와 뒷 폴더가 있는 테마만 포함된 목록을 만들고 싶고, 일치하는 테마 ID(예: "15")만 유지하고 싶습니다.

이것은 내 현재 코드입니다.

#Make a list of folders that include .ct
find *.ct* -maxdepth 0 -fprint temp1
#In this list, remove the .ctpre and .ctpost extensions
sed 's/.ctpre//' temp1 > temp2
sed 's/.ctpost//' temp2 > temp3
#Sort the list
sort temp3 > temp4
#Print/save only duplicate entries on the list
uniq -d temp4 > sub_list
#Delete temp files
rm temp1 | rm temp2 | rm temp3 | rm temp4

이를 수행하는 더 효율적인 방법이 있습니까?

답변1

모든 스크립트는 한 줄에 있습니다

for file in *.ctp{ost,re} ; do echo ${file%.*} ; done | sort | uniq -d > sub_list

또는 (감사합니다드루벤코멘트용)

for f in *.ctpre; do [ -d ${f%.*}.ctpost ] && echo ${f%.*} ; done > sub_list

관련 정보