Должен скопировать файлы в существующий каталог и уже удалить файлы туда с тем же именем, но другим расширением

Сам Grep, кажется, не поддерживает его, не использует pcregrep вместо этого:

Foo
Bar
Foo
abc

pcregrep -M "Foo\nBar" file

Добрался:

Foo
Bar
2
27.08.2017, 03:56
2 ответа

Это было окончательным ответом, который был долго обсужден в комментариях для ответа terdons.

cd new
for i in */*/*.new; do cp "$i" "path/to/old/${i}" && rm "path/to/old/${i//new/old}"; done
3
27.01.2020, 21:50

Основной подход состоял бы в том, чтобы выполнить это из каталога, содержащего mp3 файлы:

for i in *.mp3; do cp "$i" /path/to/flac/ && rm path/to/flac/"${i%.*}".flac; done

Это проходит все файлы, имя которых заканчивается в .mp3, копии каждый к /path/to/flac/ то, которое должно быть каталогом, содержащим flac файлы и если копия была успешна, удаляет соответствие .flac файл. Прием использует возможности обработки строк оболочки, ${i%.*} удалит расширение так rm ${i%.*}.flac удалит файл, который имеет то же имя как текущий mp3 файл, но a .flac расширение.

Проиллюстрировать:

$ foo='abc.def'
$ echo ${foo%.*}
abc
6
27.01.2020, 21:50
  • 1
    мне не удалось упомянуть в моем примере, что mp3 и flac каталоги являются на самом деле идентичными деревьями каталогов, поэтому просто с помощью этого для оператора, не получит их. Я собираюсь отметить вопрос, как отвечено, потому что Вы на самом деле отвечали на вопрос, который я задал, но интересно, существует ли некоторый способ сделать Вашу остроту к тому же самому с набором подкаталогов. –  William Everett 27.10.2013, 21:02
  • 2
    @Pinyaka Вы могли использовать globstar опцию для рекурсивного globbing. Установите его с shopt -s globstar, и затем можно использовать for f in ./**/*.mp3; ...; done. –  evilsoup 27.10.2013, 21:59
  • 3
    я попытался использовать упомянутый выше globstar, но получил "плохую ошибку замены. Мне все еще включили globstar опцию, когда эта команда работала на меня: for i in */*/*.mp3; do cp "$i" "path/to/flac/$i" && rm "/path/to/flac/${i//mp3/flac}";done –  William Everett 27.10.2013, 23:08

Теги

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