У меня есть файл с именем diff.txt. Хотите проверить, если он пуст. Сделал что-то подобное, но не смог заставить его работать.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
У меня есть файл с именем diff.txt. Хотите проверить, если он пуст. Сделал что-то подобное, но не смог заставить его работать.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
diff
вызов, просто проверьте возвращаемое значение: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
Ответы:
Неправильные написания раздражают, не так ли? Проверьте правильность написания
empty
, но затем также попробуйте это:Мне очень нравятся сценарии оболочки, но один из недостатков заключается в том, что оболочка не может помочь вам, когда вы ошибаетесь, тогда как компилятор, такой как ваш компилятор C ++, может вам помочь.
Кстати, обратите внимание, что я поменялся ролями
empty.txt
иfull.txt
, как предполагает @Matthias.источник
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
источник
[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }
[[-s file]] -> Проверяет, имеет ли размер файла больше 0
При необходимости проверяются все файлы * .txt в текущем каталоге; и сообщает все о пустом файле:
источник
$(ls *.txt
, и на самом деле не должно. У некоторых людей дляls
этого заданы значения по умолчанию (например, я), и оболочка уже будет расширяться*.txt
сама по себе. Просто сделайfor file in *.txt
вместо этого.find
это так:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done
for file in $(ls *.txt); do
. Пожалуйста, используйтеfor file in *.txt; do
вместо этого; пожалуйста, прочитайте эту страницу Bash Pitfalls ; и, пожалуйста, прекратите распространять антипаттерны, как это.Хотя остальные ответы верны, использование этой
"-s"
опции также покажет, что файл пуст, даже если файл не существует.Добавив эту дополнительную проверку,
"-f"
чтобы увидеть, существует ли файл первым, мы гарантируем, что результат правильный.источник
@geedoubleya ответ мой любимый.
Тем не менее, я предпочитаю это
источник
Чтобы проверить, является ли файл пустым или имеет только пробелы , вы можете использовать grep:
источник
-s
не отвечает на вопрос. Он ищет файл, который существует и имеет размер более 0 байтов.Многие из ответов верны, но я чувствую, что они могут быть более полными / упрощенными и т.д., например:
Пример 1: Базовый оператор if
если $ read_file пуст или нет, остановите показ с выходом. Я не раз неправильно читал верхний ответ, чтобы обозначить обратное.
Пример 2: как функция
источник
источник
Я пришел сюда в поисках, как удалить пустые
__init__.py
файлы, поскольку они неявно присутствуют в Python 3.3+, и в итоге использовал:Также (по крайней мере, в zsh) использование $ path в качестве переменной также нарушает вашу среду $ PATH и, таким образом, разрушает вашу открытую оболочку. Во всяком случае, думал, что я поделюсь!
источник
Самый простой способ проверить, файл пуст или нет:
Вы также можете написать это в одной строке:
источник