Size: a a a

2020 September 12

Лс

Лень с Самосознанием... in pro.bash
Хотя перенаправление, вроде, создавало файл, если оного нету...
источник

VP

Vadim "Oxyd&quo... in pro.bash
Лень с Самосознанием
Хотя перенаправление, вроде, создавало файл, если оного нету...
Вот такое — да... >>
источник

Лс

Лень с Самосознанием... in pro.bash
Vadim "Oxyd" Priluzkiy
Вот такое — да... >>
Но оно перезаписывает файл каждый раз, верно?
источник

аᶘ

асоциальный пикотран... in pro.bash
ох, ты меняешь workdir в процессе работы цикла
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
ох, ты меняешь workdir в процессе работы цикла
Неужели и с этим есть нюансы?
источник

VP

Vadim "Oxyd&quo... in pro.bash
Лень с Самосознанием
Но оно перезаписывает файл каждый раз, верно?
Нет. Два символа — добавляют в конец, один — перезаписывает.
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
#! /bin/bash
echo "Started"
workDir=$1
outputDir=$2
for w in $workDir; do
   test_array=$( ls )
   for i in $test_array; do
       [ -d "./$i" ] && workDir="$workDir $i"
       [ -f "./$i" ] && print "$i" > "$outputDir/$w.m3u"
   done
done

Вроде вот. Не проверял, уже вижу пару подозрительных мест и один баг, но это, на мой взгляд, читабельнее варианта с find
Как у тебя будет решаться проблема совпадения названия поддиректорий, если ты используешь название директории в качестве названия m3u? У тебя в дереве было "2007" в нескольких директориях, ЕМНИП.
Что будет, если у тебя в названии файла или директории будут спецсимволы вроде перевода строки, пробела, etc?
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Как у тебя будет решаться проблема совпадения названия поддиректорий, если ты используешь название директории в качестве названия m3u? У тебя в дереве было "2007" в нескольких директориях, ЕМНИП.
Что будет, если у тебя в названии файла или директории будут спецсимволы вроде перевода строки, пробела, etc?
Что самое интересное, после правок работает. Единственное что, моя идея с дополнением $workDir внутри цикла не сработала.
А так же, увидев результат, я вспомнил о том, что мне нужны пути начиная от исходной директории, в то время как ls даёт только имена. И это будет уже совсем бешенным велосипедом, дописывать пути.
Так что сохраню на память и пойду find версию писать
источник

Лс

Лень с Самосознанием... in pro.bash
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Что самое интересное, после правок работает. Единственное что, моя идея с дополнением $workDir внутри цикла не сработала.
А так же, увидев результат, я вспомнил о том, что мне нужны пути начиная от исходной директории, в то время как ls даёт только имена. И это будет уже совсем бешенным велосипедом, дописывать пути.
Так что сохраню на память и пойду find версию писать
readlink -f на файл в директории тебе решит проблему, если у тебя есть относительный путь.
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
#! /bin/bash
echo "Started"
workDir=$1
outputDir=$2
for w in $workDir; do
   test_array=$( ls )
   for i in $test_array; do
       [ -d "./$i" ] && workDir="$workDir $i"
       [ -f "./$i" ] && print "$i" > "$outputDir/$w.m3u"
   done
done

Вроде вот. Не проверял, уже вижу пару подозрительных мест и один баг, но это, на мой взгляд, читабельнее варианта с find
workDir="$workDir $workdir/$i" по идее тоже бы сработал
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
workDir="$workDir $workdir/$i" по идее тоже бы сработал
Но не с длинными путями
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Но не с длинными путями
м?
источник

Лс

Лень с Самосознанием... in pro.bash
/Music/Infected\ Mushroom/Infected\Musroom\ -\ Off.../Albums/Legend\ of\ Black\ Swarma/Legend\ of\ Black\ Swarma.mp3
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
/Music/Infected\ Mushroom/Infected\Musroom\ -\ Off.../Albums/Legend\ of\ Black\ Swarma/Legend\ of\ Black\ Swarma.mp3
Делай "${workDir}\n${workDir}/${i}" и перед for вставь IFS=$'\n'
источник

Лс

Лень с Самосознанием... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Делай "${workDir}\n${workDir}/${i}" и перед for вставь IFS=$'\n'
Это уже тот самый велосипед
источник

аᶘ

асоциальный пикотран... in pro.bash
Собственно, это проблема с пробелами внутри названий файлов, которая очень приятно и просто решается с помощью print0 в find :)
источник

аᶘ

асоциальный пикотран... in pro.bash
Поэтому ты в какой-то момент отказываешься навсегда от обхода директорий и файлов с помощью for'ов и переходишь в find во всех случаях.
источник

Лс

Лень с Самосознанием... in pro.bash
Вот именно этот путь я только что прошёл 😄
источник

аᶘ

асоциальный пикотран... in pro.bash
Лень с Самосознанием
Вот именно этот путь я только что прошёл 😄
У тебя просто ещё и хрестоматийные входные данные: в сборниках музыки часто и пробелы в названии, и всякие спецсимволы, и даже иногда переводы строки, поэтому тебя даже легче было перевести в религию find.
источник