Intereting Posts
Хорошо ли иметь несколько версий ядра Linux? Как использовать sed для замены строк, в которых есть «\»? Не удается добраться до рабочего стола Внезапная проблема с приложением стойки / пассажирского рубина: «Соединение закрыто» Как записывать сеанс TCP / TLS в societ socat? Разрешения на запись пользователя в chrooted SFTP Неверная версия заголовка OpenSSL после обновления от jessie назад Возможно ли перенаправление через UDP-порт? Каков предел на нет. из разделов, которые у меня есть? возвратные строки, содержащие числа в диапазоне в определенном столбце Firefox: разрешить всплывающие окна для всего домена java.lang.UnsatisfiedLinkError: libawt_xawt.so: libXi.so.6: невозможно открыть файл общих объектов: нет такого файла или каталога Генерация цитируемых аргументов команды Centos – список всех пакетов установки, упорядоченный по имени Как сделать загрузочный компакт-диск с защищенной загрузкой

Переместить файлы в вложенных каталогах в папку dest, но сохранить basename и удалить структуру папок?

find $(MY_DIR)/source -type f -name "*.wav3" -print0 | \ xargs -0 -P $(NPROC) -n1 -I {} \ mv {} $(MY_DIR)/sound/{}.wav 

Из вышеизложенного я пытаюсь найти все файлы .wav3, переместить их в папку с звуком, но я не слишком уверен, как обрезать выходной файл, чтобы просто сохранить его базовое имя:

$(MY_DIR)/source/deeply/nested/file/song1.wav3

$(MY_DIR)/source/deeply/nested/file/song2.mp3.wav3

будут перенесены в:

$(MY_DIR)/sound/song1.wav

$(MY_DIR)/sound/song2.wav

Как настроить мой скрипт?

Вместо того, чтобы возиться с find + xargs + mv просто переключитесь на zsh и сделайте

 autoload -U zmv zmv -n '$(MY_DIR)/source/**/(*).wav3' '$(MY_DIR)/source/${1%%.*}.wav' 

Как это работает:

  • сначала мы загружаем zmv через autoload
  • -n – предотвратить выполнение, просто посмотреть, что он будет делать, и если вы довольны результатом, удалите эту опцию
  • двойная звезда ** соответствует всем вложенным каталогам
  • (*) сопоставить что-либо и сохранить результат в переменной $1
  • ${1%%.*} Разделите первую точку на все последующие символы
  • и, наконец, добавить расширение .wav