5 maneiras de verificar se um arquivo está vazio em bash
- 1785
- 474
- Randal Kuhlman
No Linux, um arquivo vazio é um arquivo que tem um tamanho de zero bytes. Isso significa que o arquivo não contém dados e não possui nenhum conteúdo quando é aberto em um editor de texto. Um arquivo vazio pode ser criado usando o comando Touch: 'toque no myfile.TXT'
Isso criará um arquivo vazio chamado MyFile.txt no diretório atual. Você também pode criar um arquivo vazio usando o comando echo com o> operador: 'eco> myfile.TXT'
Isso substituirá qualquer conteúdo existente no arquivo com uma string vazia, criando efetivamente um arquivo vazio.
Método para verificar se um arquivo está vazio em bash
Existem várias maneiras diferentes de verificar se um arquivo está vazio em Bash, dependendo de suas necessidades específicas e das ferramentas disponíveis no seu sistema. Neste artigo, veremos cinco abordagens diferentes para verificar se um arquivo estiver vazio em Bash.
- Usando o
'teste'
comando ou'['
O
#!/usr/bin/Env Bash FileName = MyFile.txt # verifique se o arquivo está vazio se [ ! -s "$ filename"]; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi'teste'
comando (que é um alias para o'[
'Command) é um utilitário simples e amplamente disponível para realizar vários testes em arquivos e outros objetos em bash. Para verificar se um arquivo está vazio usando'['
, você pode usar o'-s'
opção, que verifica o tamanho do arquivo:12345678910 #!/usr/bin/Env Bash FileName = MyFile.txt # verifique se o arquivo está vazio se [ ! -s "$ filename"]; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi Observe que o
#!/usr/bin/Env Bash FileName = MyFile.txt [-z "$ (cat $ filename)"] então o arquivo echo "está vazio" else echo "o arquivo não está vazio" fi'-s'
A opção considera um arquivo vazio se seu tamanho for zero, mas não verifica a presença de caracteres ocultos ou espaço em branco. Se você quiser verificar se há um arquivo completamente vazio (eu.e., um que contém apenas espaço em branco ou não tem linhas), você pode usar o'-z'
opção, que verifica se a string está vazia:123456789 #!/usr/bin/Env Bash FileName = MyFile.txt [-z "$ (cat $ filename)"] então o arquivo echo "está vazio" else echo "o arquivo não está vazio" fi Isso lerá o conteúdo do arquivo e os passará para o comando de teste como uma string. Se a string estiver vazia, o arquivo será considerado vazio.
Você também pode verificar os arquivos existentes antes de testar o arquivo vazio. O script abaixo verificará se o arquivo existe e se o arquivo estiver vazio ou não.
#!/usr/bin/Env Bash FileName = MyFile.txt if [-f "$ filename"]; então se [-s "$ filename"]; então echo "arquivo $ filename existe e não é vazio" else eco "arquivo $ filename, mas existe, mas é vazio O arquivo "fi else echo" $ FileName não existe "fi12345678910111213 #!/usr/bin/Env Bash FileName = MyFile.txt if [-f "$ filename"]; então se [-s "$ filename"]; então echo "arquivo $ filename existe e não é vazio" else eco "arquivo $ filename, mas existe, mas é vazio Arquivo "Fielse Echo" $ FileName não existe "Fi Conforme o exemplo acima, se meu arquivo.TXT Não existe, o script mostrará a saída como "arquivo não existe" e, se o arquivo existir e for um arquivo vazio, ele mostrará a saída como "o arquivo existe, mas vazio", caso contrário, se o arquivo existir tiver algum conteúdo Mostre a saída como “o arquivo existe e não está vazio”.
- Usando o comando WC
O 'Banheiro' (Contagem de palavras) Comando é outro utilitário que pode ser usado para verificar se um arquivo está vazio em bash. Para verificar o número de linhas em um arquivo, você pode usar o
#!/usr/bin/Env Bash FileName = MyFile.txt # verifique se o arquivo tem alguma linha se [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi'-eu'
opção:12345678910 #!/usr/bin/Env Bash FileName = MyFile.txt # verifique se o arquivo tem alguma linhas [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi Isso passará o conteúdo do arquivo para o 'Banheiro' comando como entrada padrão e o
'-eu'
a opção contará o número de linhas. Se o número de linhas for zero, o arquivo será considerado vazio. - Usando o comando Grep
O 'grep' O comando é uma ferramenta poderosa para pesquisa e processamento de arquivos de texto. Para verificar se um arquivo está vazio usando Grep, você pode usar o
#!/usr/bin/Env Bash FileName = MyFile.txt se grep -q . "$ Nome do arquivo"; Então o arquivo de eco "arquivo não está vazio" else eco "está vazio" fi'-q'
Opção, que faz com que o Grep funcione silenciosamente e retorne um código de saída:123456789 #!/usr/bin/Env Bash FileName = MyFile.txt se grep -q . "$ Nome do arquivo"; Então o arquivo de eco "arquivo não está vazio" else eco "está vazio" fi Isso procurará o arquivo por qualquer caractere (. é uma expressão regular que corresponde a qualquer caractere) e retorna um código de saída zero se uma correspondência for encontrada ou um código de saída diferente de zero se o arquivo estiver vazio.
Usando o comando find
O 'encontrar' O comando é um utilitário para pesquisa e processamento de arquivos e diretórios. Para verificar se um arquivo está vazio usando o encontro, você pode usar a opção -que corresponde aos arquivos vazios:
#!/usr/bin/Env Bash FileName = MyFile.txt se encontrar . -tipo F -OMBE -NAME "$ FILENAME"; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi12345678 | #!/usr/bin/Env Bash FileName = MyFile.txtif encontre . -tipo F -OMBE -NAME "$ FILENAME"; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi |
Isso irá pesquisar no diretório atual (.) para arquivos (-Type f) que estão vazios (-vazio) e ter o nome "meu arquivo.TXT" (-name “myfile.TXT"). Se uma correspondência for encontrada, o comando de localização retornará um código de saída zero, indicando que o arquivo está vazio. Se nenhuma correspondência for encontrada, o comando de localização retornará um código de saída diferente de zero, indicando que o arquivo não está vazio.
Usando o comando stat
O 'Estado' O comando é um utilitário para exibir informações sobre arquivos e sistemas de arquivos. Para verificar se um arquivo está vazio usando o STAT, você pode usar a opção -c para exibir o tamanho do arquivo em bytes:
#!/usr/bin/Env Bash FileName = MyFile.txt if [$ (stat -c %s "$ filename") -eq 0]; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi12345678 | #!/usr/bin/Env Bash FileName = MyFile.txtif [$ (stat -c %s "$ filename") -eq 0]; Então o arquivo de eco "arquivo está vazio" else eco "não está vazio" fi |
Isso passará o tamanho do arquivo para o '[' comando, que o comparará a zero. Se o tamanho for zero, o arquivo será considerado vazio. Se o tamanho for diferente de zero, o arquivo não é considerado vazio.
Espero que esses exemplos tenham lhe dado uma boa compreensão das diferentes maneiras de verificar se um arquivo está vazio em Bash. Como você pode ver, existem muitas abordagens diferentes para escolher, e a melhor dependerá de suas necessidades específicas e das ferramentas disponíveis no seu sistema.
- « Como formatar a unidade USB na linha de comando Linux
- Ubuntu 15.04 (Vivid Vervet) Data de lançamento »