特定のディレクトリにあるファイルの拡張子が正しいことを確認してください。

特定のディレクトリにあるファイルの拡張子が正しいことを確認してください。

.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そこに許可されているものがあることを確認する必要があるのはなぜですか?

ところで、Unixのルールは次のようになります。「結果なし=良いニュース」。したがって、上記のコマンドは、指定された拡張子と一致しないファイルのみを印刷します。すべてが正常に進むと、何も印刷しません。


PS:これは良い例です。プログラマーの進化。 ;)

おすすめ記事