Eu tenho um arquivo chamado diff.txt. Deseja verificar se está vazio. Fiz algo assim, mas não consegui fazê-lo funcionar.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
Eu tenho um arquivo chamado diff.txt. Deseja verificar se está vazio. Fiz algo assim, mas não consegui fazê-lo funcionar.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
diff
chamada, basta verificar o valor de retorno:if diff foo.txt bar.txt; then echo 'No difference'
if [ ! -s diff.txt ]; then echo "IS EMPTY";else echo "HAS SOMETHING";fi
$ cat diff.txt | hexdump -C
Respostas:
Erros de ortografia são irritantes, não são? Verifique sua ortografia
empty
, mas tente também:Eu gosto muito de scripts de shell, mas uma desvantagem disso é que o shell não pode ajudá-lo quando você escreve incorretamente, enquanto um compilador como o seu compilador C ++ pode ajudá-lo.
Observe, aliás, que troquei os papéis de
empty.txt
efull.txt
, como @Matthias sugere.fonte
empty=empty.txt; full=full.txt; diff=diff.txt; if [ -s ${diff?} ]; then r=${empty?} t=${full?}; else r=${full?} t=${empty?}; fi; rm ${r?}; touch ${t?}
set -u
fonte
[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }
[[-s file]] -> Verifica se o arquivo tem tamanho maior que 0
Se necessário, isso verifica todos os arquivos * .txt no diretório atual; e relata todo o arquivo vazio:
fonte
$(ls *.txt
, e de fato não deveria. Algumas pessoas têm padrões definidos parals
usar o formato longo (como eu) e o shell já será expandido*.txt
por conta própria. Apenas façafor file in *.txt
.find
seguinte:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done
for file in $(ls *.txt); do
. Por favor use em seufor file in *.txt; do
lugar; por favor leia esta página Bash Pitfalls ; e por favor, pare de espalhar antipadrões assim.Enquanto as outras respostas estiverem corretas, o uso da
"-s"
opção também mostrará que o arquivo está vazio, mesmo que ele não exista.Ao adicionar essa verificação adicional
"-f"
para verificar se o arquivo existe primeiro, garantimos que o resultado esteja correto.fonte
Resposta @geedoubleya é o meu favorito.
No entanto, eu prefiro isso
fonte
Para verificar se o arquivo está vazio ou possui apenas espaços em branco , você pode usar o grep:
fonte
-s
não responde à pergunta. Ele procura por um arquivo que exista e tenha um tamanho superior a 0 bytes.Muitas das respostas estão corretas, mas eu sinto que elas podem ser mais completas / simplistas, etc., por exemplo:
Exemplo 1: Instrução if básica
se $ read_file estiver vazio ou não parar o show com exit. Mais de uma vez, eu interpretei mal a resposta principal aqui para dizer o contrário.
Exemplo 2: Como uma Função
fonte
fonte
Eu vim aqui procurando como excluir
__init__.py
arquivos vazios, pois eles estão implícitos no Python 3.3+ e acabaram usando:Além disso (pelo menos no zsh), o uso de $ path como variável também quebra seu env $ PATH e, portanto, quebra seu shell aberto. Enfim, pensei em compartilhar!
fonte
A maneira mais fácil de verificar o arquivo está vazia ou não:
Você também pode escrevê-lo em uma única linha:
fonte