我有一个目录,其中包含以 .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