파일 확장자 목록과 일치하는 각 하위 디렉터리의 첫 번째 파일을 얻는 방법은 무엇입니까? 내 목표는 일련의 하위 디렉터리에 있는 하나의 파일에서만 프로그램을 실행하는 것입니다.
예를 들어 아래에는 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