Сам Grep, кажется, не поддерживает его, не использует pcregrep вместо этого:
Foo
Bar
Foo
abc
pcregrep -M "Foo\nBar" file
Добрался:
Foo
Bar
Это было окончательным ответом, который был долго обсужден в комментариях для ответа terdons.
cd new
for i in */*/*.new; do cp "$i" "path/to/old/${i}" && rm "path/to/old/${i//new/old}"; done
Основной подход состоял бы в том, чтобы выполнить это из каталога, содержащего 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
shopt -s globstar
, и затем можно использовать for f in ./**/*.mp3; ...; done
.
– evilsoup
27.10.2013, 21:59
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