명령줄에서 파일 일치 패턴이 있습니까?

명령줄에서 파일 일치 패턴이 있습니까?

상대적으로 복잡한 명령줄 파일 일치 패턴에 대해 도움을 줄 수 있는 사람이 있습니까?

다음과 같이 디렉토리에 파일이 있습니다.

1.png
1_thumb.png
1-1.png
1-1_thumb.png
1-2.png
1-2_thumb.png
2.png 
2_thumb.png
2-1.png
2-1_thumb.png
3.png
3_thumb.png
3-1_thumb.png

-1어딘가에 동일한 파일 이름을 가진 복사본이 없는 모든 파일을 나열하고 싶습니다 . 따라서 위의 예에서 결과는 입니다 3.png.

주의: 도움이 된다면 파일과 "-1"이 포함된 복사본의 파일 크기는 동일합니다.

누구든지 이 작업을 수행하는 방법을 제안할 수 있습니까?

답변1

모든 파일이 -n복사본이고 엄지 손가락도 원하지 않는다고 가정하면 KornShell(ksh) 및 Bash에서 옵션 extglob세트( shopt -s extglob)를 사용하여 작동합니다.

for f in !(*_thumb.png|*-[1-9].png); do
  g=${f%.png}-1.png
  test -f $g || echo $f
done

답변2

복사본임을 결정하는 것이 "-1"뿐이라면 2-1.png 또는 2-1_thumb.png 파일의 복사본도 없는 것입니다. 이것이 일치 기준이고 엄지손가락도 테스트하고 싶다면 다음을 수행할 수 있습니다.

for i in `ls |grep -v "\-1"  | cut -f1 -d.`; do 
    if `echo $i | grep thumb > /dev/null`; then 
        test -f `echo $i.png | sed 's/_/-1_/g'` || echo $i.png; 
    else 
        test -f $i-1.png || echo $i.png; 
    fi; 
done

그렇지 않고 엄지손가락이 중요하지 않다면 KAK의 답변이 적합해야 합니다.

관련 정보