파일 확장자 목록과 일치하는 각 하위 디렉터리의 첫 번째 파일을 얻는 방법은 무엇입니까?

파일 확장자 목록과 일치하는 각 하위 디렉터리의 첫 번째 파일을 얻는 방법은 무엇입니까?

파일 확장자 목록과 일치하는 각 하위 디렉터리의 첫 번째 파일을 얻는 방법은 무엇입니까? 내 목표는 일련의 하위 디렉터리에 있는 하나의 파일에서만 프로그램을 실행하는 것입니다.

예를 들어 아래에는 3개의 하위 디렉터리가 있습니다. .dat 또는 .d01 확장자를 가진 파일을 찾고 싶기 때문에 subdir1/file.dat, subdir2/file.d01 및 subdir3/file1.dat에서 프로그램을 실행하고 싶습니다.

subdir1 - file.dat, file.d01    
subdir2 - file.d01, file.d02, file.d03    
subdir3 - file1.dat, file2.dat

다음은 마지막 두 디렉토리와 같은 디렉토리를 실행하기 시작할 때까지 한동안 잘 작동했습니다. subdir3은 결국 모든 파일이 처리되기 때문에 문제가 됩니다.

find . -name "*.dat" -exec mixb {} \;

답변1

그리고 zsh:

for d (subdir*(/)) mixb $d/*.(dat|d01)([1])

이에 상응하는 bash것은 다음과 같습니다.

shopt -s nullglob extglob
for d in subdir*/; do
  [ -L "${d%/}" ] && continue
  set -- "$d"*.@(dat|d01)
  [ "$#" -eq 0 ] || mixb "$1"
done

관련 정보