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

Моя цель – найти последовательность команд 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 FOR IN захватывает файлы в папке?
  • Проверьте, существует ли в каталоге несколько файлов
  • Подстановочные знаки: как я могу перечислить файлы, заканчивающиеся на `.txt`, только без использования символа точки?
  • `command. *` действует в родительском каталоге
  • Почему tar --exclude = ". *" Создает пустой архив?
  • Как создать каталог во всех подкаталогах?
  • Как совместить точную строку с помощью `sed`? Но не его часть.
  • Как найти файлы, содержащие новую строку в имени файла?
  • Interesting Posts

    Устранение неполадок SSH на сервере Ubuntu

    Перемещение одного файла за раз, исходя из определенного числа в файлах

    Конфигурируемые виртуальные хосты на основе Apache, но оба имени хоста напрямую на один и тот же сайт

    Как обновить ядро ​​Debian?

    Как вставить строку между двумя последовательными,?

    Как связать разные (несовместимые) библиотеки во время выполнения в зависимости от программы?

    Как правильно запустить программу и сделать возможным перенаправить свой текущий выход (stdout и stderr) на более поздний этап?

    Как избежать кавычек в оболочке?

    Как заставить выпуск модификаторов клавиатуры

    Как определить, действительно ли я нахожусь в символической ссылке из командной строки?

    Как настроить панель задач в просветлении DE?

    Извлечь диапазон элементов из i-го элемента в j-й элемент, вплоть до n-го элемента из списка

    Почему этот простой клиент Perl не работает?

    запускать скрипт в нескольких папках параллельно

    Запрос состояния питания дисплея в Linux (Xorg) в командной строке

    Linux и Unix - лучшая ОС в мире.