Удалить файлы с таким же именем

У меня в папке много файлов * .srt. Дело в том, что у меня несколько раз был один и тот же файл с немного другим именем.

Вот так:

one_piece_001_US.srt
one_piece_SPECIAL_001_US.srt
one_piece_002_US.srt
one_piece_003_US.srt
one_piece_SPECIAL_003_US.srt
one_piece_004_US.srt
one_piece_SPECIAL_004_US.srt
one_piece_005_US.srt
one_piece_006_US.srt
one_piece_007_US.srt
one_piece_SPECIAL_007_US.srt

Я хочу удалить каждый файл " one_piece_SPECIAL _ * _ US.srt " с помощью оболочки.

-3
задан 28 December 2020 в 14:43

2 ответа

Просмотрите каждый файл, затем выполните поиск, если имя файла содержит подстроку [118432 1] СПЕЦИАЛЬНЫЙ в нем. Если это так. Удалите его с помощью команды rm.

#!/bin/bash

for file in *.srt; do
    if [[ $file =~ .*SPECIAL.* ]]; then
        echo rm $file
    fi
done

Чтобы заставить приведенный выше код работать ... удалите echo в 5 строке

0
ответ дан 3 January 2021 в 22:44

Если специальное имя файла соответствует формату имена в вашем примере вы можете использовать

rm -i [DVD]_ONE_PIECE_*_SPECIAL_*US.srt

-i - это интерактивный режим, поэтому он всегда спрашивает вас, хотите ли вы удалить файл, поэтому вам нужно будет нажать y 15 раз для каждого специальный файл, чтобы вы случайно не удалили не тот файл, если случайно есть какой-то другой файл, который вы хотите сохранить, в том же формате имени.

Если вы не хотите, чтобы вас спрашивали о каждом файл, вы можете поместить -f вместо -i

2
ответ дан 3 January 2021 в 22:44

Другие вопросы по тегам:

Похожие вопросы: