Переименовать подпапки - PullRequest
       9

Переименовать подпапки

2 голосов
/ 13 февраля 2011

Я пытаюсь исправить мою музыкальную папку, что itunes испортил.

Так что мне нужен скрипт для перемещения файлов из:

music \ Artist \ Название альбома \ Artist - название.mp3

для перемещения файлов в

newmusic \ название альбома \ Artist - title.mp3.

Я пробовал строку ниже, но не сработало.

find music -type f -exec bash -c 'ext="${0##*.}"; base="$(basename "$0" ."${ext}")"; dirs="$(dirname "$0" | cut -d '/' -f 2,3)"; new="newmusic/${dirs}/${base}.${ext}"; cp "$0" "${new}"' {} \;

Должен ли "cut -d '/' -f 2,3" быть в новом = "newmusic / $ {{dirs} cut -d '/' -f 2,3} / Кто-нибудь может помочь? Заранее спасибо ..

Ответы [ 4 ]

2 голосов
/ 13 февраля 2011

Я что-то здесь упускаю, или mv не может достичь того, что вы хотите? Исходя из вашего вопроса, это должно работать:

mv music/*/* newmusic/
1 голос
/ 20 марта 2011

Трюки, просто избегайте '-exec bash -c', и в результате вы получите нечитаемый код, защищенный от кавычек.

Вместо этого играйте с:

find -name .mp3 | while read file
do
    # Play with "$file"
    # Don't play with $file without doubles quotes, keep spaces in mind
    # Don't play with '$file', it'a common error ^^
done
1 голос
/ 08 марта 2011
for artist in music/*; do
  if [[ -d "$artist" ]]; then
    for album in $artist/*; do
      mv "$album/*" "newmusic/${album##*/}/"
    done
  fi
done
0 голосов
/ 13 февраля 2011

1. cd в ваш рабочий каталог

2. find music/Artist -type d -maxdepth 0 -exec mv {} newmusic/ \; должен сделать трюк.

Если вы не хотите mv, вы можете заменить mv наcp -r.

...