![디렉터리의 파일 목록에서 첫 번째 파일 읽기 [중복]](https://linux55.com/image/95512/%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EB%AA%A9%EB%A1%9D%EC%97%90%EC%84%9C%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%ED%8C%8C%EC%9D%BC%20%EC%9D%BD%EA%B8%B0%20%5B%EC%A4%91%EB%B3%B5%5D.png)
"cat 또는 vi"를 사용하여 각 디렉토리의 첫 번째 텍스트 파일을 읽고 싶습니다. 질문을 명확히하려면 다음을 수행하십시오.
Folder_A1에는 1000개의 텍스트 파일이 포함되어 있습니다. 파일 이름은 다음 형식으로 "i.1351"로 지정됩니다. 모든 파일 이름은 "i"로 시작됩니다. 그리고 파일마다 숫자가 다릅니다.
500개의 폴더가 있고 각 폴더에는 약 1000개의 텍스트 파일(*.txt)이 포함되어 있으며 각 폴더의 첫 번째 파일만 읽으려고 합니다. 어떻게 해야 하나요?
답변1
디렉토리 순서대로 첫 번째 파일을 원하고 모든 폴더 이름이 로 시작한다고 가정하면 Folder_
,로 시작하는 모든 항목 Folder_
은 디렉토리이고,로 시작하는 모든 항목은 i.
파일입니다.
for d in Folder_*; do
for f in "$d"/i.*; do
cat -- "$f"
break
done
done
답변2
정렬 때문에 조금 느립니다.
find . -type f | sort -V |
awk -F/ '{ dir=substr($0,1,length($0)-length($NF));
if(last==dir)next; last=dir; print}' |
| xargs cat
먼저 정렬되어 있습니다 -V
. 디렉토리가 변경될 때마다 파일 이름이 인쇄됩니다. (이름에 공백이 없다고 가정합니다.)i.2
i.10
awk