Удалите файлы, которые не начинаются с ‘Builder’

#macos

#macos

Вопрос:

Мне нужно обновить проект на моем веб-сервере. К сожалению, другие пользователи уже изменили некоторые файлы на сервере, которые я не хочу перезаписывать. Я могу безопасно перезаписать все файлы, которые начинаются с «Builder» (например, «BuilderUser.php » или «BuilderTemplate.php «).

Моя идея заключалась в том, чтобы скопировать мой локальный каталог и удалить все файлы, которые не начинаются с «Builder», а затем загрузить полученную папку. И я использую OS X. Есть ли какой-либо способ удалить все файлы, которые не имеют префикса «Builder»?

Ответ №1:

Откройте терминал, перейдите в корень вашего проекта и введите

 find . -type f | grep -v '/Builder[^/]*' | xargs rm
  

find будет печатать что угодно в . или подкаталогах, -type f имея в виду обычные файлы (в отличие от блочных устройств, символических ссылок, каталогов и т.д.). grep будет печатать любую строку, которая (из-за -v ) не соответствует шаблону. Для шаблона, / указывающего каталог, ‘Builder’ должен быть первым, что появляется после каталога (так в имени файла), [^/] означает любой символ, кроме / (разделитель каталогов), и * означает любое количество последнего элемента (без косых черт). xargs затем берет файлы из канала и передает их в качестве аргументов rm .

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