Squeak.ru - шаблоны программирования

удалить определенные файлы и сохранить некоторые

поэтому у меня есть этот каталог, который включает эти файлы .js и .yml и одну папку с именем config

pogi@gwapo-pah:~$ ls 

index.cat.js
index.bird.js
index.dog.js
index.monkey.js
function.yml
config

Я хотел бы выполнить однострочную команду bash, которая выполняла бы эти

найти, существует ли "index.dog.js", и если нет, то выйти

найдите, существует ли «index.dog.js», и если он есть, удалите только другие файлы *.js и сохраните index.dog.js, function.yml и папка config

если команда выполнена успешно, то файлы из папки должны выглядеть так:

index.dog.js
function.yml
config

это до сих пор я пытался, однако я не могу продолжить недостающую логику

if [ -f index.dog.js ] ; then echo 'exists' ; fi
14.08.2019

Ответы:


1
test -f index.dog.js && find . -name \*.js -not -name index.dog.js -exec rm {} +

Объяснение:

test — это способ сделать if без всего лишнего синтаксиса, если вам не нужен else.

&& - это "короткое замыкание" (выход), которое вы хотите, если нет файла собаки.

find ищет файлы по нескольким критериям. В этом случае файлы, имена которых соответствуют *.js, но не являются файлом собаки.

Затем find может выполнить команду для найденных файлов. {} заменяет найденные файлы. + означает поместить все имена файлов в одну команду rm, а не запускать по одной команде для каждого файла.

14.08.2019

2

Другой способ с помощью команды find:

[ -f "index.dog.js" ] && find . -maxdepth 1 -name \*.js -not -name index.dog.js -delete

Команда find находит в текущем каталоге любой файл с расширением js, но index.dog.js и удаляет его.

замените . на имя папки, если вы не находитесь в каталоге, где находится файл.

14.08.2019

3

Проверьте, существует ли «index.dog.js». Если это так, используйте find, чтобы получить все файлы *.js (но не index.dog.js), и удалите их.

EDIT Как правильно советует Джон Кугельман, лучше избегать ls из-за возможных несоответствий с ним.

[ -f "index.dog.js" ] && \
    find . -type f -not -name "index.dog.js" -name \*.js -exec rm {} +
14.08.2019
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...