ОБНОВЛЕНИЕ: Поскольку RobC прокомментировал этот ответ, существующие пробельные символы или символы новой строки могут вызвать проблемы с перечислением файлов из-за использования команды ls
с массивами bash. Таким образом, приведенный выше код может быть улучшен таким образом
#!/bin/bash
i=0
for file in *.mp3; do
i=$((i+1))
mv "$file" "$(printf "%03d_%s" "$i" "$file")"
done
ОРИГИНАЛЬНЫЙ ОТВЕТ: Вы можете попробовать этот код в bash-скрипте. Не забудьте сделать его исполняемым с
$ chmod +x script.sh
.
#!/bin/bash
contents_dir=($(ls *.mp3))
for file in ${!contents_dir[*]}; do
new=$(awk -v i="$file" -v cd="${contents_dir[$file]}" 'BEGIN {printf("%03d_%s", i+1, cd)}')
mv ${contents_dir[$file]} $new
done
Будет добавлен последовательный 0-значный номер дерева, как вы хотели, ко всем mp3-файлам, найденным в каталоге, где выполняется сценарий.