Удаление существующего файла в каталоге

#bash

#bash

Вопрос:

Я пытаюсь проверить, есть ли в каталоге существующий файл, если да, то я хотел бы удалить файл перед перемещением нового файла в этот каталог.

 if [[${abc_directory}/filename*.dmp]] ; then
rm -rf ${abc_directory}/filename*.dmp
  

Я думаю, что мне не хватает некоторой логики в операторе if.

Комментарии:

1. Всякий раз, когда у вас возникает ошибка сценария оболочки, хорошим первым шагом является вырезание и вставка вашего кода в shellcheck. очистите и исправьте ошибки (важные) и предупреждения (могут быть важными), которые он идентифицирует. Если у вас возникли проблемы с пониманием его сообщений, тогда подойдите сюда и спросите.

Ответ №1:

Просто сделайте:

 rm -f "${abc_directory}"/filename*.dmp
  

Опция -f ( --force ) указывает rm игнорировать несуществующие файлы.

Я не включил -r , потому что, следуя вашему описанию, вы будете удалять отдельные файлы, а не деревья каталогов.

Я экранировал ${abc_directory} часть, чтобы избежать проблем с пробелами. Предполагается, что abc_directory он не содержит никаких желаемых подстановочных знаков / заполнителей.

Ответ №2:

В вашем примере вы не ищете конкретный файл, вы используете подстановочный знак. Почему бы просто не сделать rm -rf ${abc_directory}/filename*.dmp перед перемещением в новый файл и покончить с этим?

Вот как проверить наличие одного файла.

 if [ -e ${abc_directory}/filename.dmp ];then 
   rm -f ${abc_directory}/filename.dmp
fi
  

Комментарии:

1. Бесполезно проверять существование файла, если единственной причиной является его удаление с помощью rm -f ... (-f == —force). Просто вызовите rm -f ... .