5 façons de vérifier si un fichier est vide en bash

5 façons de vérifier si un fichier est vide en bash

Dans Linux, un fichier vide est un fichier qui a une taille de zéro octets. Cela signifie que le fichier ne contient aucune donnée et qu'il n'a aucun contenu lorsqu'il est ouvert dans un éditeur de texte. Un fichier vide peut être créé à l'aide de la commande tactile: 'Touchez monfile.SMS'

Cela créera un fichier vide appelé myfile.txt dans le répertoire actuel. Vous pouvez également créer un fichier vide à l'aide de la commande echo avec l'opérateur>: 'echo> myfile.SMS'

Cela écrasera tout contenu existant dans le fichier avec une chaîne vide, créant efficacement un fichier vide.

Méthode pour vérifier si un fichier est vide en bash

Il existe plusieurs façons différentes de vérifier si un fichier est vide en bash, selon vos besoins spécifiques et les outils disponibles sur votre système. Dans cet article, nous examinerons cinq approches différentes pour vérifier si un fichier est vide en bash.

  1. En utilisant le 'test' commande ou '['
  2. Le 'test' commande (qui est un alias pour le '['Command) est un utilitaire simple et largement disponible pour effectuer divers tests sur les fichiers et autres objets en bash. Pour vérifier si un fichier est vide en utilisant '[', vous pouvez utiliser le '-s' Option, qui vérifie la taille du fichier:

    #!/ usr / bin / env-bash filename = myfile.txt # Vérifiez si le fichier est vide si [ ! -S "$ nom de fichier"]; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi
    12345678910#!/ usr / bin / env-bash filename = myfile.txt # Vérifiez si le fichier est vide ! -S "$ nom de fichier"]; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi

    Notez que le '-s' L'option considère qu'un fichier est vide si sa taille est nul, mais elle ne vérifie pas la présence de caractères cachés ou d'espace. Si vous souhaitez vérifier un fichier complètement vide (je.e., Celui qui ne contient que de l'espace ou n'a aucune ligne du tout), vous pouvez utiliser le '-z' Option, qui vérifie si la chaîne est vide:

    #!/ usr / bin / env-bash filename = myfile.txt [-z "$ (cat $ nom de fichier)"] puis écho "le fichier est vide" else echo "le fichier n'est pas vide" fi
    123456789#!/ usr / bin / env-bash filename = myfile.txt [-z "$ (cat $ nom de fichier)"] puis écho "le fichier est vide" else echo "le fichier n'est pas vide" fi

    Cela lira le contenu du fichier et les transmettra à la commande de test sous forme de chaîne. Si la chaîne est vide, le fichier est considéré comme vide.

    Vous pouvez également vérifier les fichiers existants avant de tester le fichier vide. Le script ci-dessous vérifiera si le fichier existe et si le fichier est vide ou non.

    #!/ usr / bin / env-bash filename = myfile.txt if [-f "$ filename"]; alors si [-s "$ filename"]; alors echo "file $ filename existant et non vide" else echo "file $ filename mais vide "fi else echo" fichier $ nom de fichier n'existe pas "fi
    12345678910111213#!/ usr / bin / env-bash filename = myfile.txt if [-f "$ filename"]; alors si [-s "$ filename"]; alors echo "file $ filename existant et non vide" else echo "file $ filename mais vide "Fielse echo" fichier $ nom de fichier n'existe pas "fi

    Selon l'exemple ci-dessus, si mon fichier.SMS n'existe pas, le script affichera la sortie comme «le fichier n'existe pas» et si le fichier existe et est un fichier vide, il affichera la sortie comme «le fichier existe mais vide», sinon si le fichier existe contient un certain contenu Afficher la sortie comme «le fichier existe et non vide».

  3. En utilisant la commande wc
  4. Le 'toilettes' (Word Count) La commande est un autre utilitaire qui peut être utilisé pour vérifier si un fichier est vide en bash. Pour vérifier le nombre de lignes dans un fichier, vous pouvez utiliser le '-l' option:

    #!/ usr / bin / env-bash filename = myfile.txt # Vérifiez si le fichier a des lignes si [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi
    12345678910#!/ usr / bin / env-bash filename = myfile.txt # Vérifiez si le fichier a des lignes de ligne [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi

    Cela passera le contenu du fichier au 'toilettes' commande comme entrée standard, et le '-l' L'option comptera le nombre de lignes. Si le nombre de lignes est nul, le fichier est considéré comme vide.

  5. En utilisant la commande grep
  6. Le 'grep' La commande est un outil puissant pour la recherche et le traitement des fichiers texte. Pour vérifier si un fichier est vide à l'aide de Grep, vous pouvez utiliser le '-Q' Option, qui fait que Grep s'exécute tranquillement et renvoie un code de sortie:

    #!/ usr / bin / env-bash filename = myfile.txt si grep -q . "$ Nom de fichier"; Puis écho "le fichier n'est pas vide" else echo "le fichier est vide" fi
    123456789#!/ usr / bin / env-bash filename = myfile.txt si grep -q . "$ Nom de fichier"; Puis écho "le fichier n'est pas vide" else echo "le fichier est vide" fi

    Cela recherchera le fichier pour n'importe quel caractère (. est une expression régulière qui correspond à n'importe quel caractère) et renvoie un code de sortie zéro si une correspondance est trouvée, ou un code de sortie non nul si le fichier est vide.

    Utilisation de la commande Find

    Le 'trouver' La commande est un utilitaire pour la recherche et le traitement des fichiers et répertoires. Pour vérifier si un fichier est vide à l'aide de Find, vous pouvez utiliser l'option -empty, qui correspond aux fichiers vides:

    #!/ usr / bin / env-bash filename = myfile.txt si trouver . -type f -empty -Name "$ nom de fichier"; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi
    12345678#!/ usr / bin / env-bash filename = myfile.txtif trouver . -type f -empty -Name "$ nom de fichier"; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi

    Cela recherchera le répertoire actuel (.) pour les fichiers (-type f) qui sont vides (-vide) et avoir le nom "mon fichier.SMS" (-Name «Myfile.SMS"). Si une correspondance est trouvée, la commande find renvoie un code de sortie zéro, indiquant que le fichier est vide. Si aucune correspondance n'est trouvée, la commande find renvoie un code de sortie non nulle, indiquant que le fichier n'est pas vide.

    En utilisant la commande stat

    Le 'stat' La commande est un utilitaire pour afficher des informations sur les fichiers et les systèmes de fichiers. Pour vérifier si un fichier est vide à l'aide de STAT, vous pouvez utiliser l'option -C pour afficher la taille du fichier en octets:

    #!/ usr / bin / env-bash filename = myfile.txt si [$ (stat -c% s "$ nom de fichier") -eq 0]; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi
    12345678#!/ usr / bin / env-bash filename = myfile.txtif [$ (stat -c% s "$ nom de fichier") -eq 0]; Puis Echo "Le fichier est vide" else echo "Le fichier n'est pas vide" fi

    Cela passera la taille du fichier au '[' commande, qui le comparera à zéro. Si la taille est nulle, le fichier est considéré comme vide. Si la taille n'est pas nulle, le fichier n'est pas considéré comme vide.

J'espère que ces exemples vous ont donné une bonne compréhension des différentes façons de vérifier si un fichier est vide en bash. Comme vous pouvez le voir, il existe de nombreuses approches différentes, et la meilleure dépendra de vos besoins spécifiques et des outils disponibles sur votre système.