У меня есть файл с названием diff.txt. Хотите проверить, если он пустой. Сделал что-то подобное, но не мог'т заставить его работать.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
Опечатки раздражают, разве't они? Проверить правописание "пустой", но тут же попробовать это:
#!/bin/bash -e
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
Мне нравится Шелл много сценариев, но один недостаток его заключается в том, что Shell не может помочь вам, когда вы ошибетесь, а компилятор как компилятор C++ может помочь вам.
Заметьте, кстати, что у меня поменялись ролями `empty.txt и full.txt как @Маттиас предполагает.
[ -s file.name ] || echo "file is empty"
[[ -s файл ]] --> проверяет, если файл имеет размер больше, чем 0
if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi
При необходимости, проверяет все *.txt файлы в текущей директории; и отчеты все пустой файл:
for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done
В то время как другие ответы являются правильными, используя в "-ов" и вариант будет также показать файл является пустым, даже если файл не существует. Добавив эту дополнительную проверку в
" Ф"` В, чтобы увидеть, если существует файл, мы обеспечиваем правильный результат.
if [ -f diff.txt ]
then
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
else
echo "File diff.txt does not exist"
fi
@geedoubleya ответ мой любимый.
Однако, я предпочитаю этот
if [[ -f diff.txt && -s diff.txt ]]
then
rm -f empty.txt
touch full.txt
elif [[ -f diff.txt && ! -s diff.txt ]]
then
rm -f full.txt
touch empty.txt
else
echo "File diff.txt does not exist"
fi
Многие ответы верны, но я чувствую, что они могли бы быть более полными / упрощенно и т. д. например :
Пример 1 : Основное, если заявление
# BASH4+ example on Linux :
typeset read_file="/tmp/some-file.txt"
if [ ! -s "${read_file}" ] || [ ! -f "${read_file}" ] ;then
echo "Error: file (${read_file}) not found.. "
exit 7
fi
если $read_file пуст или не существует, остановить шоу с выходом. Я не раз уже недооценил верхний ответ здесь подразумевает обратное.
Пример 2 : как функция
# -- Check if file is missing /or empty --
# Globals: None
# Arguments: file name
# Returns: Bool
# --
is_file_empty_or_missing() {
[[ ! -f "${1}" || ! -s "${1}" ]] && return 0 || return 1
}
[[ -f filename && ! -s filename ]] && echo "filename exists and is empty"
Чтобы проверить, если файл является пустые или только пробелы, вы можете использовать команду grep:
if [[ -z $(grep '[^[:space:]]' $filename) ]] ; then
echo "Empty file"
...
fi
Я пришла сюда ищу, как удалить файлы пустые `init.py как они подразумеваются в Python 3.3+ и в конечном итоге с помощью:
find -depth '(' -type f -name __init__.py ')' -print0 |
while IFS= read -d '' -r file; do if [[ ! -s $file ]]; then rm $file; fi; done
Также (по крайней мере в ЗШ) с помощью переменной окружения $PATH переменной также нарушает ваш $Path env и поэтому он'МР разбить твое открытой оболочки. Во всяком случае, думал, что я'd доля!