Для списка всех файлов запускаются с числа в каталоге,
find . -maxdepth 1 -regextype "posix-egrep" -regex '.*/[0-9]+.*\.mp3' -type f
Проблема с Вашим подходом состоит в том что find
возвращает относительный путь файла, и Вы просто ожидаете само имя файла.
Существует причина обе одинарных кавычки '
и двойные кавычки "
существовать. Параметры расширены в двойных кавычках, но не в одинарных кавычках.
echo "<a href=\"/path/to/dir/$i\">$i</a>" >> /var/www/index.html
Проблема состоит в том, что у Вас есть одинарные кавычки, переносящие переменные. Вы - переменные, считаются литералами при обертывании отделенными кавычками. Попытайтесь переключить их на двойные кавычки вместо этого.
Также необходимо удалить задние галочки вокруг "эха...". Они должностное лицо подоболочка, которая дает Вам эту ошибку:
a: line 5: <a href="/path/to/dir/file1">file1</a>: No such file or directory
a: line 5: <a href="/path/to/dir/file2">file2</a>: No such file or directory
Этот сценарий делает то, в чем Вы нуждаетесь:
#!/bin/bash
list_dir=`ls -t /path/to/dir/`
for i in $list_dir
do
echo "<a href=\"/path/to/dir/$i\">$i</a>" >> /var/www/index.html
done