Create variable based on the order a file is in an alphabetical list of files

В самом простом случае, предполагая, что формат записей "пути" точно такой, как показано, вы можете использовать awk в режиме абзаца

awk '{print > $3".txt"}' RS= ORS='\n\n' file
2
25.03.2017, 01:49
2 ответа

Просто используйте цикл for и счетчик:

k=1; for file in *mp3; do
        id3v2 --track "$k" "$file"
        ((k++))
     done

Это позволит перебрать все файлы и каталоги, имя которых заканчивается на mp3, сохраняя каждый как $file. Затем переменная $k увеличивается один раз за итерацию (((k++))), поэтому $k будет номером файла в порядке их обработки, и вы можете использовать --track "$k" для установки номера трека.

3
27.01.2020, 21:59

Это может быть просто (работает даже с именами файлов, в которых используются новые строки):

arr=(*)

Все имена файлов в pwd будут храниться в массиве и доступ к ним будет осуществляться по их номеру, например: "${arr[2]}".

Звездочка очень похожа на ls, попробуйте echo * или для выбора mp3 попробуйте echo *.mp3чтобы увидеть ее в действии.

Вы можете просмотреть список всех файлов с помощью:

printf '%s\n' "${arr[@]}"

Затем вы можете использовать цикл для обработки каждого имени файла:

for (( i=0 ; i<${#arr[@]} ; i++ )); do
    id3v2 --track "$((i+1))" "${arr[@]}"
done
1
27.01.2020, 21:59

Теги

Похожие вопросы