특정 디렉터리에 있는 파일의 확장자가 올바른지 확인하세요.

특정 디렉터리에 있는 파일의 확장자가 올바른지 확인하세요.

.gif여러 디렉터리를 생성한 다음 파일 확장자(예: in)에 따라 한 디렉터리의 다른 파일을 특정 하위 디렉터리로 이동하여 구성하는 스크립트를 만들었습니다 .media.jpgpictures

이제 이 디렉터리에 올바른 확장자를 가진 파일만 포함되어 있는지 확인해야 합니다.

다음 단계를 설명하는 몇 가지 의견과 함께 지금까지 생각해낸 내용은 다음과 같습니다.

    #!/bin/bash

    #iterate over each DIRECTORY once
    #while in DIRECTORY list the files it contains
    #check the extension of containe files with given list of EXTENSIONS
    #if file has wrong extension print error message and stop loop
    #if all files are in corret DIRECTORY print confirmation message

    echo "Checking: $DIRECTORY for:$EXTENSIONS"

    for (( i = 0; i < 4; i++ )); do
        if [[ i -eq 1 ]]; then
            DIRECTORY="documents"
            EXTENSIONS="*.txt *.doc *.docx"
            #list files and check EXTENSIONS
    elif [[ i -eq 2 ]]; then
            DIRECTORY="media"
            EXTENSIONS="*.gif"
            #if I equals 2 then look into media DIRECTORY
            #list files and check EXTENSIONS
    elif [[ i -eq 3 ]]; then
            DIRECTORY="pictures"
            EXTENSIONS="*.jpg *.jpeg"
            #if I quals 3 then look into pictures DIRECTORY
            #list files and check EXTENSIONS
    else
            DIRECTORY="other"
            EXTENSIONS="*"
            #statements
    fi  
    done

답변1

확장자와 일치하지 않는 모든 파일을 인쇄하는 것은 어떻습니까?

find documents -type f ! \( -name \*.txt -o -name \*.doc -o -name \*.docx \)
find media     -type f !    -name \*.gif
find pictures  -type f ! \( -name \*.jpg -o -name \*.jpeg \)

other거기에 허용되는 것이 있는지 확인해야 하는 이유는 무엇입니까 ?

그런데 유닉스 규칙은 다음과 같습니다."결과 없음 = 좋은 소식". 따라서 위 명령은 지정된 확장자와 일치하지 않는 파일만 인쇄합니다. 모든 것이 제대로 진행되면 아무 것도 인쇄하지 않습니다.


추신: 이것은 좋은 예입니다.프로그래머의 진화. ;)

관련 정보