Удалите все файлы, к которым не существует соответствующий файл с другим расширением.

Моя цель – найти последовательность команд Linux, которая удаляет некоторые файлы, если выполнено специальное условие:

Все файлы с расширениями .cut или .cut.bak в текущем каталоге должны быть удалены, если не существует файла с тем же именем, кроме расширения .rec или .mpg в текущем каталоге.

Предпосылки: Я разрабатываю инструмент для PVR на базе Linux, который позволяет разрезать записанные программы. Для каждой записи (расширение .rec или .mpg ) маркеры сегмента хранятся в .cut с тем же именем. Когда какая-либо запись перемещается / переименовывается / удаляется, соответствующий файл разреза остается сиротой и должен быть удален. Я уже реализовал удаление этих бесполезных файлов cut в C. Но мне интересно, может ли быть (простое) решение на основе системы. В этом случае его можно запустить с помощью «системы» и «в фоновом режиме», что сделает мое приложение более отзывчивым …

Я уже задал аналогичный вопрос для рекурсивного случая (просмотр также в подкаталоги), здесь . На kos был (почти) идеальный ответ, но, к сожалению, он удаляет слишком много файлов, поэтому его нельзя использовать, и я не смог его понять … Но эту идею можно использовать здесь, если она можно разобрать и направить результат строки 'ls' …

One Solution collect form web for “Удалите все файлы, к которым не существует соответствующий файл с другим расширением.”

Как это?

 for f in *.cut *.cut.bak do [ -e "$f" ] || continue f="${f%%.bak}" f="${f%%.cut}" [ -e "$f".mpg ] || [ -e "$f".rec ] || rm -i -- "$f".cut "$f".cut.bak done 
  • Как выполнить команду во всех подпапках
  • Совпадение шаблона оболочки и появление регулярных выражений
  • Bash для соответствия каталогам, имена которых начинаются с точки (периода), будучи «явным», вместо использования «shopt -s dotglob»?
  • Как вывести количество всех файлов с «tty» в имени файла в каталоге Linux, где хранятся файлы на системных устройствах
  • команда find: -или опция не работает
  • Как использовать mogrify convert только в файлах с определенной датой создания?
  • Как найти конкретный файл с определенным набором строк?
  • Проверьте, существует ли в каталоге несколько файлов
  • Можно ли сопоставить несколько конкретных номеров строк (не диапазон) с sed?
  • Как использовать логический ИЛИ в поиске?
  • Команда scp ведет себя по-разному при использовании с функцией expect
  • Linux и Unix - лучшая ОС в мире.