.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