Я пытаюсь клонировать каталог и его подкаталоги в другой каталог. У меня есть сотни музыкальных каталогов с подкаталогами, которые я хочу преобразовать из flac в ogg. Я хочу, чтобы все музыкальные подкаталоги в /Music были клонированы в /Music /Oggs /, чтобы при выполнении преобразования все файлы записывались в одни и те же имена каталогов. Вот что у меня есть:

/ Музыка / Van_Halen_Discography / 1980 Сначала женщины и дети /

Что мне нужно, это клон каталогов к этому:

/ Музыка / Oggs / Van_Halen_Discography / 1980 "Женщины и дети прежде всего" /

Я попытался с помощью 'find /Music -type d | cat> /Music /Oggs'

Но это не сработало, что мне не хватает? Спасибо

2 ответа2

1

Вы можете использовать rsync следующим образом.

 rsync -av -f"+ */" -f"- *" /path/to/Music/ /path/to/Music/oggs

Здесь -a говорит rsync рекурсировать через dirs и сохранять ссылки, разрешения и владение, в то время как v делает его многословным. -f - фильтр с первым аргументом, включающим все каталоги, и вторым, исключая все файлы. Я предлагаю сначала попробовать небольшой пример, если вы не знакомы с rsync.

0

Есть простой способ, предположим, что вы находитесь в ~/Music/ с текущей оболочкой.

mkdir Oggs            # In case you do not have done before    
cp -rp !(Oggs) Oggs  
  • cp - это обычная команда, используемая в Linux для копирования файлов и каталогов
  • -rp или , если вы предпочитаете -r -p варианты для r ecurse по каталогам и p резерв времени обращающегося, домовладения ...
    Используйте man cp для более полного понимания.
  • !(Oggs) Хитрый ! вы отрицаете то, что находится внутри круглых скобок: вы говорите, скопируйте все файлы, а не Oggs в Oggs

Примечание. Для этого требуется shopt extglob , если он отключен, используйте shopt -s extglob чтобы включить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .