В DOS есть команда
xcopy /s *.mp3 ..\TEMP2
Как это сделать в Ubuntu?
cp -r *.mp3 ../TEMP2
рекурсивно скопирует все mp3-файлы, к сожалению, без пути из-за *.mp3
фильтра.
cp -r *.* ../TEMP2
скопирует путь, но не может быть ограничен файлами mp3
Я посмотрел rsync, но не понял.
решение1
Сила инструментов в Ubuntu в том, что вы можете их комбинировать. Следующая команда находит все файлы .mp3 в текущем каталоге и его подкаталогах и копирует их в папку ../TEMP2/
, сохраняя пути:
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3'
- находит все файлы, заканчивающиеся на.mp3
(без учета регистра) и-exec
- выполняет команду для каждого матча:install -D {} ../TEMP2/{}
- копирует соответствующий файл с../TEMP/
сохранением пути. ({}
заменяется путем, включая имя файла)
\;
- завершает-exec
команду
Если вы хотите получить прогресс, добавьте -ls
("list") к команде перед -exec
. Его можно поставить \;
и после, но в этом случае имя будет показано после копирования. Примеры:
find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
решение2
Есть несколько вариантов, но, боюсь, ни один из них не является по-настоящему простым…
rsync
rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2
Это говорит исключить все файлы ( exclude="*"
), но просмотреть все каталоги ( include="*/"
) и включить все файлы mp3 ( include="*.mp3"
). Если вы не хотите копировать каталоги, не содержащие никаких файлов mp3, дополнительно --prune-empty-dirs
необходима эта опция.
почтовый индекс
zip -R archive.zip "*.mp3"
unzip -d ../TEMP2 archive.zip && rm archive.zip
Первая команда создает архив со всеми mp3-файлами, вторая распаковывает содержимое в целевой каталог и удаляет файл архива, если это удалось.
находить
find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"
Это позволит найти все файлы mp3 и скопировать их в соответствующий путь в каталоге ../TEMP2
после предварительного создания структуры каталогов ( install -D
).
скопировать все и удалить остальное
Это имеет смысл только в том случае, если у вас есть всего несколько файлов, которые вынехочу скопировать:
cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete
Это скопирует все, а затем удалит все файлы, которые не являются файлами mp3.