zsh를 사용하여 파일 이름으로 2개의 폴더를 구별하는 방법은 있지만 파일 이름의 시작 부분만 있습니까?

zsh를 사용하여 파일 이름으로 2개의 폴더를 구별하는 방법은 있지만 파일 이름의 시작 부분만 있습니까?

그래서 비슷한 파일이 많이 들어 있는 폴더 2개가 있고 파일 이름에 버전이 적혀 있으므로 파일 이름의 시작 부분이 동일한지 확인하고 싶습니다(예: "sample-1.12" 및 " 샘플-1.13"은 동일한 것으로 간주되어야 합니다.) 비슷한 이름의 파일이 없는 반대 폴더에서 파일을 찾으면 됩니다.

확인할 파일 이름의 첫 부분은 첫 번째 대시, 밑줄 또는 대괄호로 끝납니다.

답변1

${a:|b}배열 빼기 연산자를 사용할 수 있습니다 .

dir1=/some/dir
dir2=/some/other/dir

a=($dir1/*[[_-]*(N:t)) # [t]ail of every file with at least one -, [ or _
b=($dir2/*[[_-]*(N:t))

a=(${a%%[[_-]*}) # strip [*, _* or -* suffix
b=(${b%%[[_-]*})

print -r in $dir1 and not in $dir2:
print -rC1 -- ${a:|b}
print -r in $dir2 and not in $dir1:
print -rC1 -- ${b:|a}

관련 정보