как проверить существование файла в linux

Содержание

Проверка существования файла Bash

В рамках интерпретатора Bash, как и в повседневном понимании людей, все объекты файловой системы являются, тем, чем они есть, каталогами, текстовыми документами и т.д. В этой статье будет рассмотрена проверка наличия файла Bash, а также его проверка на пустоту, и для этого используется команда test.

Проверка существования файла Bash

Начать стоит с простого и более общего метода. Параметр -e позволяет определить, существует ли указанный объект. Не имеет значения, является объект каталогом или файлом.

Пример работы кода:

Вначале команда test проверяет параметром -e, существует ли Домашний каталог пользователя, название которого хранится системой в переменной $HOME. При отрицательном результате скрипт завершит работу с выводом сообщения об этом. Если такой каталог обнаружен, параметр продолжает проверку. На этот раз ищет в $HOME файл testing. И если он есть, то в него дописывается информация, иначе он создастся, и в него запишется новая строка данных.

Проверка наличия файла

Проверка файла Bash на то, является ли данный объект файлом (то есть существует ли файл), выполняется с помощью параметра -f.

Пример работы кода:

В сценарии проверяется, является ли $HOME файлом. Результат проверки отрицательный, после чего проверяется настоящий файл .bash_history, что уже возвращает истину.

На заметку: на практике предпочтительнее использовать сначала проверку на наличие объекта как такового, а затем — на его конкретный тип. Так можно избежать различных ошибок или неожиданных результатов работы программы.

Проверка файла на пустоту

Чтобы определить, является ли файл пустым, нужно выполнить проверку с помощью параметра -s. Это особенно важно, когда файл намечен на удаление. Здесь нужно быть очень внимательным к результатам, так как успешное выполнение этого параметра указывает на наличие данных.

Результат работы программы:

В этом скрипте файл создаётся командой touch, и при первой проверке на пустоту возвращается отрицательный результат. Затем в него записываются данные в виде команды date, после чего повторная проверка файла возвращает истину.

Выводы

Источник

Как проверить, существует ли файл или каталог в Bash

Часто при написании сценариев оболочки вы можете оказаться в ситуации, когда вам нужно выполнить действие в зависимости от того, существует файл или нет.

В Bash вы можете использовать команду test, чтобы проверить, существует ли файл, и определить тип файла.

Команда test принимает одну из следующих синтаксических форм:

Проверьте, существует ли файл

Если вы хотите выполнить другое действие в зависимости от того, существует файл или нет, просто используйте конструкцию if / then:

Вы также можете использовать команду test без оператора if. Команда после оператора && будет выполнена только в том случае, если статус выхода тестовой команды — истина,

Если вы хотите запустить серию команд после оператора && просто заключите команды в фигурные скобки, разделенные ; или && :

Проверить, существует ли каталог

Например, чтобы проверить, существует ли каталог /etc/docker вы должны использовать:

Проверьте, не существует ли файла

Проверьте, существует ли несколько файлов

Эквивалентные варианты без использования оператора IF:

Операторы проверки файлов

Команда test включает в себя следующие операторы FILE, которые позволяют проверять файлы определенных типов:

Выводы

В этом руководстве мы показали вам, как проверить, существует ли файл или каталог в Bash.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Как проверить, существует ли файл или каталог в Bash

Главное меню » Операционная система Linux » Как проверить, существует ли файл или каталог в Bash

В Bash вы можете использовать команду test, чтобы проверить, существует ли файл и определить тип файла.

Команда test принимает одну из следующих синтаксических форм:

Если вы хотите, чтобы ваш скрипт был переносимым, вы должны предпочесть использовать старую тестовую команду [, которая доступна во всех оболочках POSIX. Новая обновленная версия команды test [[(двойные скобки) поддерживается в большинстве современных систем, использующих Bash, Zsh и Ksh в качестве оболочки по умолчанию.

Проверьте, существует ли файл

Наиболее читаемым вариантом при проверке файла является использование команды test в сочетании с оператором if. Любой из приведенных ниже фрагментов проверит, /etc/resolv.conf существует ли файл:

Если вы хотите выполнить другое действие в зависимости от того, существует файл или нет, просто используйте конструкцию if/then:

Всегда используйте двойные кавычки, чтобы избежать проблем при работе с файлами, содержащими пробелы в своих именах.

Вы также можете использовать команду test без оператора if. Команда после оператора && будет выполнена только в том случае, если статус выхода команды test равен true,

Если вы хотите выполнить серию команд после оператора &&, просто заключите команды в фигурные скобки, разделенные ; или &&:

Напротив оператор &&, после оператора || будет выполняться только в том случае, если статус выхода команды test равен false.

Проверьте, существует ли каталог

Например, чтобы проверить, /etc/docker существует ли каталог, вы должны использовать:

Вы также можете использовать двойные скобки [[ вместо одной [.

Проверьте, не существует ли файл

Проверьте, существует ли несколько файлов

Эквивалентные варианты без использования оператора IF:

Операторы проверки файлов

Команда test включает в себя следующие операторы FILE, которые позволяют тестировать определенные типы файлов:

Заключение

В этой статье мы показали, как проверить, существует ли файл или каталог с помощью Bash.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Блог системного администратора Windows/Linux/FreeBSD

Shell-скрипт с условием проверки наличия файла для Linux/FreeBSD

Остальные ключи проверки файлов/каталогов:

Второй вариант bash-скрипта для проверки условия существования файлов и их архивирования при наличии:

Третий вариант проверки условия существования любых файлов в каталоге:

#Задаем переменную директории
DIR=/000/test/test

Четвертый вариант проверки условия существования любых файлов в каталоге с бесконечным циклом:

Похожие записи:

Shell-скрипт с условием проверки наличия файла для Linux/FreeBSD : 8 комментариев

Подскажите, а как будет выглядеть скрипт, который не даст дальнейшее выполнение основного скрипта, пока в указанном каталоге присутствуют файлы (любые), с любым именем и расширением?

Алексей, я добавил в статью вариант под вашу нужду. Пойдет?

Третий вариант, я думаю тоже возьму на заметку, но
если можно покажите пример, в котором бы
был как я понимаю бесконечный цикл проверки на наличия файлов.

То есть почти как третий вариант, только если файлы есть, то работа скрипта не прекращалась вообще, а допустим был бы sleep 5 и после него проверка повторялась и так до тех пор пока каталог не будет пустым и только тогда пойдёт выполнение скрипта далее.

То что надо!
Спасибо

Если быть точнее, то пишу скрипт:

если данный скрипт выполнить под ssh, то всё ок, а если
его выполняет cron, то всё время получаю ноль.

Вроде разобрался, указал до команды find полный путь.

Источник

Как проверить наличие файла или каталога в R, Python и Bash?

Проверка наличия файла или каталога в R

Как проверить наличие файла?

Наличие файла легко проверить с помощью команды file.exists() из базового пакета. Посмотрите следующий пример:

Попробуем теперь с файлом, которого не существует:

Кроме того, при необходимости создать пустой файл выполняется такая команда:

Как проверить наличие каталога?

Теперь выполним следующее упражнение. Проверим, есть ли каталог. Если его нет, создадим новый:

Папка my_new_folder создается в нашем рабочем каталоге.

Проверка наличия файла или каталога в Python

Как проверить наличие файла?

Здесь мы будем работать с модулем os :

Кроме того, здесь задействуется модуль pathlib :

При открытии файла помните о следующих режимах:

Как проверить наличие каталога?

Это, опять же, аналогично проверке наличия файла:

Каталог создается следующим образом:

Чтобы проверить, существует ли объект Path независимо или является файлом/каталогом, используется exists() :

Или с помощью модуля os :

Проверка наличия файла или каталога в Bash

Как проверить наличие файла?

Как и ожидалось, файл существует. Теперь при необходимости создать пустой скрипт выполняется такая команда:

Как проверить наличие каталога?

Мы получили сообщение о том, что каталог существует.

Обратите внимание, что для создания каталога выполняется следующая команда:

И в завершение приведем перечень необходимых флагов для проверки файлов и каталогов в Bash:

Источник

Операционные системы и программное обеспечение