как проверить существование файла в 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: