Я использую следующую функцию в zsh:
ununzip () {
rm -r $(unzip -l $1 | grep -v 'Archive:' | \
grep '[/.]' | sed 's![^a-zA-Z]([a-zA-Z./])!\1!')
}
Т.е. замена команды для удаления всех файлов в очищенном выводе unzip -l
.
tar tvf
мог использоваться похожим способом.
В соответствии с Ubuntu или Debian, это просто:
rename 's/Dropkick Murphys - //' *mp3
Выберите тот.
for i in *.mp3; do mv "$i" "${i#* - }"; done
for i in *.mp3; do mv "$i" "${i:19}"; done
Можно использовать a for
цикл к циклу по файлам Вы хотите изменить. ${var/from/to}
заменит первое вхождение from
с to
в $var
, так ${var/Dropkick Murphys - /}
ничем заменит "Dropkick Murphys -":
for i in "Dropkick Murphys - "*; do
mv "$i" "${i/Dropkick Murphys - /}"
done
Обязательный ответ zsh:
autoload zmv
zmv 'Dropkick Murphys - (*.mp3)' '$1'
Варианты, чтобы сделать переименование для всех имен художника. Обратите внимание, что первая команда берет самое долгое соответствие первого *
, например, это переименует Dropkick Murphys - 01 - Walk Away - concert.mp3
кому: Walk Away - concert.mp3
.
zmv '* - (* - *.mp3)' '$1'
zmv '*.mp3' '${f#* - }'
for i in *.mp3; do mv "$i" "$(echo $i | sed 's/^Dropkick Murphys - //')"; done
или, более общий, для удаления сначала 3 разграниченных пространством слов из имени файла
echo $i | cut -d' ' -f4-
cut
опрометчиво. regexp, сканирующий для -
соответствовал бы лучше здесь. Подсказка: не работайте управляет Вами данный перед пониманием то, что собирается произойти и/или вещи пробного прогона, использующие echo mv ...
или smt. как этот прежде, чем работать за реалами.
– alex
25.11.2010, 10:46
Существует a rename.ul
команда (я предполагаю по умолчанию в Ubuntu). Это дает Вам простой способ переименовать файлы
Синтаксис:
$ rename from to file...
prename
в других системах. – ephemient 25.11.2010, 21:58rename
также и я никогда не использовал его. Хотя синтаксис на хиндуrename from to filename...
– Michael Mrozek♦ 26.11.2010, 02:10