Как удалить все файлы MP4 с именем файла, которое не заканчивается на -converted? - PullRequest
1 голос
/ 09 января 2020

Я конвертировал / сжимал несколько файлов MP4 из нескольких папок, используя VL C. Например, имена преобразованных / сжатых файлов заканчиваются на -converted. 2. bubble sort-converted.mp4.

Действительно громоздко go помещать в каждую папку, удалять все исходные файлы и оставлять преобразованные файлы.

Используя некоторую команду zsh / bash, я хотел бы рекурсивно удалить все исходные файлы и оставить преобразованные файлы. Например, я удалю 3 - sorting/2. bubble sort.mp4 и оставлю 3 - sorting/2. bubble sort-converted.mp4.

TLDR; Проще говоря, удалите все файлы с расширением .mp4, где имена файлов не заканчиваются на -converted, используя некоторую команду zsh / bash.

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 09 января 2020

find можно использовать с логическим выражением для сопоставления желаемых файлов и их удаления.

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

find . -type f -not \( -name '*converted*' \) -a -name "*.mp4"

Как только вы насытитесь результатом списка файлов, добавьте -delete, чтобы сделать фактический удалить.

find . -type f -not \( -name '*converted*' \) -a -name "*.mp4" -delete
0 голосов
/ 16 января 2020

Это будет работать, даже если ваши имена файлов содержат ', "или пробел:

find . -name '*.mp4' |
  grep -v 'converted' |
  parallel -X rm -f
0 голосов
/ 10 января 2020

Чистое решение zsh:

rm -f ^(*.mp4-converted)(.)

^ ................. negates
*-converted ....... pattern
(.) ............... regular files

Использование параллельной GNU (для многих файлов)

parallel --no-notice rm -rf ::: ^(*converted)(.)
0 голосов
/ 09 января 2020

Попробуйте:

find . -name '*.mp4' | grep -v 'converted' | xargs rm -f
...