Я искал и много тем танцевал вокруг того, чего я пытаюсь выполнить. У меня есть более 2000 файлов m4a, зарытых в 17 000 mp3. Структура каталога /home/me/Музыка/MP3 /Artist/Album/song.m4a. Я хочу использовать «найти», чтобы открыть песни m4a, переместить их, их каталог альбомов и каталог их исполнителей на /home/me/Music/M4A/Исполнитель/Альбом /song.m4a. Я был неудачен с коммутатором mv -exec, и я неудачно использовал basename и/или dirname для создания сценария. Родительские и родительские каталоги меня бросили. Перемещение самих файлов не является проблемой, просто создавая структуру каталогов И перемещая файлы. По частям я экспортировал список файлов find /home/me/Music/MP3 -name "*.m4a" >> dir.sh
(отчасти потому, что я хотел видеть расположение файлов и количество песен). Затем я запустил sed 's/MP3/M4A/g' dir.sh
, чтобы заменить MP3 на M4A. Отбросьте song.m4a, как в этом примере из dir.sh оставит меня со списком Исполнитель/Album каталогов для запуска через цикл while с mkdir: /home/me/Music/M4A/Metallica/Re-load/Metallica - Unforgiven.m4a. К сожалению, вот где я застрял, dirname дает «.»Сценарий Bash для перемещения файлов и их родительского каталога
ответ
find /home/me/Music/MP3 -name \*.m4a| sed -e 's/.*/mkdir -p $(dirname "&"); mv "&" "&"M4A;/' | sed -e 's/MP3\([^"]*\)"M4A$/M4A\1"/' > moveit_baby.sh
bash moveit_baby.sh
должен выполнить эту работу, но перед тем как позвонить, отметьте «moveit_baby.sh».
В зависимости от вашей реализации sed вам понадобится \(\)
или просто ()
во втором sed. Конечно, строка "MP3"
не должна быть частью названия исполнителя, альбома или песни, иначе вам нужен более сложный фильтр, см. Ниже.
Дальнейшая оптимизация при вставке mkdir -p
возможна только при изменении имени файла. Такие более сложные решения по входным параметрам лучше достигается при while read
петель
find /home/me/Music/MP3 -name \*.m4a | while read file
do
# do anything you want to $file here
done
После некоторого исследования я считаю, что sed - это путь, но вышеприведенный код имеет ту же проблему, что и мой скрипт mv ... родительские и правые каталоги не становятся перемещенными/созданными. В приведенном выше коде есть суть переименования файлов с дополнительным «MP4» в конце песни и никогда не перемещается нигде. Поскольку мне не хватает ключевого элемента работы с каталогами, цикл, хотя и хорошая идея, еще нельзя использовать. Я изучу «sed» немного больше и опубликую, если придумаю решение. – Ergo
, предполагая, что часть вашей проблемы связана с пробелами в именах файлов и dir. Обязательно dbl-quote использовать любое использование '' $ dir '' и '' $ file "' vars. Удачи. – shellter
- 1. Сценарий Bash для переименования файлов и перемещения в другую папку
- 2. Сценарий Windows для перемещения файлов
- 3. сценарий bash для перемещения файлов из глубокой структуры каталогов
- 4. сценарий bash для удаления файлов, соответствующих их в другом каталоге
- 5. Сценарий Bash для перемещения файлов yy/mm/dd
- 6. Используйте gulp для выбора и перемещения каталогов и их файлов
- 7. Java: просмотр каталога для перемещения больших файлов
- 8. Сценарий для перемещения папок и файлов с помощью минажа
- 9. Сценарий, используемый для перемещения файлов между компьютерами
- 10. Сценарий Windows для перемещения файлов при создании
- 11. Сценарий Bash для перемещения папок на основе изменений в размерах?
- 12. команды для перемещения файлов другого каталога
- 13. Сценарий Bash для переименования файлов regex
- 14. Сценарий Bash для запуска нескольких файлов подряд
- 15. Сценарий для перемещения файлов по одному и переименования
- 16. bash скрипт для создания папок и перемещения файлов
- 17. Сценарий Bash для редактирования кучи файлов
- 18. Сценарий Windows для переименования и перемещения файлов с аргументами
- 19. Сценарий оболочки для перемещения, архивирования и переименования файлов
- 20. Сценарий для создания XML списка файлов каталога
- 21. Поиск файлов по типу и их переименование на основе их родительского каталога
- 22. Сценарий Bash для перемещения и переименования файлов журналов приложений в Linux
- 23. Сценарий оболочки для клонирования каталога
- 24. сценарий bash для загрузки файлов в sftp
- 25. Сценарий bash для подсчета количества всех файлов
- 26. Как написать сценарий bash для сопоставления файлов
- 27. сценарий оболочки для перемещения файлов неправильно конкатенирующих строк
- 28. Сценарий bash для проверки файлов tar.gz
- 29. Bash удаление файлов из каталога
- 30. Dir.glob для обработки всех файлов рекурсивно и отслеживания их родительского каталога
Посмотрите здесь, чтобы форматировать ваш вопрос: http://stackoverflow.com/editing-help –
будет больше в соответствии с философией StackOverflow если вы включите свою лучшую попытку решить вашу проблему. В общем, используйте небольшой тестовый тест и просто используйте 'echo mv ....', пока не получите правильные имена Dir. ИЛИ, может быть, 'cd .../MP3; найти . -name '* .m4a' | xargs mv {} ../ M4A' (после выполнения этого M4A dir раньше времени). Удачи. – shellter
Спасибо. Я не был уверен, что было бы целесообразно опубликовать мой неудачный сценарий. Я пробовал так много разных подходов, что здесь занял бы много места. Я рад за это направление. – Ergo