Как обнаружить файлы с одинаковыми именами, но с разными расширениями?

У меня есть каталог, файлы которого имеют расширение .JPG или .NEF, и я хочу удалить файлы формы X.NEF, для которых X.JPG не существует в каталоге. (Здесь X может быть любой строкой.) Я не знаю, как это сделать, кроме как вручную.

Более общая ситуация возникает, когда вы хотите найти все файлы в каталоге A, которые также существуют в каталоге B. (Первая проблема может быть превращена во вторую с помощью mmv.)

6
задан 12 June 2015 в 15:03

1 ответ

Можно использовать оболочку ${var%ext} функции замены параметра для удаления первоначального внутреннего абонента на основе на файл: проиллюстрировать

touch file{1..6}.NEF file{1,2,4,6}.JPG

Затем

for nef in *.NEF; do [[ -f "${nef%.NEF}.JPG" ]] || echo rm -- "$nef"; done

результаты в

rm -- file3.NEF
rm -- file5.NEF

Объяснение:

Первая команда просто создает 6 .NEF файлы пронумерованы file1.NEF кому: file6.NEF и соответствующий .JPG файлы для 3 из них т.е. просто некоторые пустые файлы для тестирования второй команды на.

8
ответ дан 12 June 2015 в 15:03

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

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