检查特定目录中的文件是否具有正确的扩展名?

检查特定目录中的文件是否具有正确的扩展名?

我已经创建了一个脚本,它将创建几个目录,然后通过根据文件的扩展名(即,.gif在)将其他文件从一个目录移动到特定的子目录中来组织它们。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:这是一个很好的例子程序员的进化。 ;)

相关内容