Как я могу получить пробельный пробел тире рекурсивно после всех моих номеров дорожек в моей музыкальной папке с командной строкой?
Необходимо также указать, как в настоящее время появляются имена файлов. Если, например, папка, содержащая список файлов, похожа на это:
$ ls -1v
1Music.mp3
2Music.mp3
3Music.mp3
4Music.mp3
5Music.mp3
6Music.mp3
7Music.mp3
8Music.mp3
9Music.mp3
10Music.mp3
Мы можем использовать:
rename "s/(^[0-9]+)/\$1\ \-\ /" *.mp3
Добираться:
'1 - Music.mp3'
'2 - Music.mp3'
'3 - Music.mp3'
'4 - Music.mp3'
'5 - Music.mp3'
'6 - Music.mp3'
'7 - Music.mp3'
'8 - Music.mp3'
'9 - Music.mp3'
'10 - Music.mp3'
Чтобы быть на безопасной стороне, используйте -n
опция протестировать Вашу команду сначала:
rename -n "s/(^[0-9]+)/\$1\ \-\ /" *.mp3
Эта команда покажет, как файлы будут переименованы, на самом деле не переименовывая их.
Можно искать такой шаблон имени файла с помощью регулярного выражения.
find . -regex '.*\s\-\s.*'
find
команда, которая ищет рекурсивно по умолчанию. .
поскольку первый аргумент представляет путь для поиска в, можно заменить его любым произвольным путем, если Вы не хотите искать в текущем рабочем каталоге.\s
в регулярных выражениях.\-
. Если Вы хотите включать другие типы тире, необходимо покрыть их использующий набор символов в regex, например. [\-–—]
..*
позволяет любые символы (включая ни один) прежде и после шаблона, на котором мы фокусируемся.