Verifique se os arquivos em um diretório específico possuem a extensão apropriada?

1

Eu criei um script que criará alguns diretórios e organizará outros arquivos de um diretório, movendo-os para subdiretórios específicos com base em sua extensão (por exemplo, .gif in media , .jpg in pictures ).

Agora tenho que verificar esses diretórios para ter certeza de que eles contêm apenas os arquivos com a extensão correta.

Abaixo está o que eu fiz até agora com comentários explicando para onde estou indo:

    #!/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
    
por lettda 15.04.2016 / 03:04

1 resposta

2

Que tal você imprimir todos os arquivos que não correspondem às suas extensões?

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 \)

Por que você precisa verificar other se alguma coisa é permitida lá?

A propósito, a convenção do Unix é: "no output = good news" . Portanto, os comandos acima apenas imprimem arquivos que não correspondem às extensões especificadas; se tudo estiver bem, eles não imprimirão nada.

P.S .: Este é um bom exemplo de a evolução de um programador . ;)

    
por 15.04.2016 / 03:24