Скрипт для выполнения команды для всех файлов в папке

Я новичок в Freebsd / nginx, поэтому подобные QAs мне не помогли (у меня был код:

$ext = pathinfo ($_FILES['rawexcel']['name'][$i], PATHINFO_EXTENSION); //get extension of file, run different converters depending on extension if ($ext == 'xlsx' ) { exec("/usr/local/bin/cnvt /var/tmp/xls/result.xlsx /var/tmp/result.csv "); } else if ($ext == 'xls' ) { exec("/usr/local/bin/xls2csv -x /var/tmp/xls/result.xls* -b WINDOWS-1251 -c /var/tmp/result.csv -a UTF-8"); } /var/tmp/xls/ 

когда мои имена файлов были постоянными (result.xls, которые затем преобразовывались в result.csv), и я обрабатывал файлы один за другим; cnvt и xls2csv являются преобразователями. Теперь у меня есть загрузка ajax и вы хотите выполнить команду exec для всех файлов в папке, сохраняя исходное имя файла. Я попытался запустить тот же код с result.xls, который был заменен на * (звездочка), но это не сработало.

что у меня есть:

папка tmp / xls с файлами excel

что я хочу:

конвертировать все файлы inna в файлы inna в .csv, сохраняя свои исходные имена. Поблагодарите любую помощь.

UPDATE: лучший способ выполнить команду для всех файлов в каталоге, чтобы создать / отредактировать скрипт, чтобы сделать это, работая со всеми файлами в каталоге намного проще в bash. Удачи.

Посмотрите, как вы извлекли расширение …

$ ext = pathinfo ($ _FILES ['rawexcel'] ['name'] [$ i], PATHINFO_EXTENSION);

Вы можете проверить документы pathinfo, и вы увидите, как получить имя файла без пути или расширения:

 $filename = pathinfo($_FILES['rawexcel']['names'][$i], PATHINFO_FILENAME); 

Тогда вы можете использовать это …

 if ($ext == 'xlsx' ) { exec("/usr/local/bin/cnvt /var/tmp/xls/$filename.xlsx /var/tmp/$filename.csv "); } else if ($ext == 'xls' ) { exec("/usr/local/bin/xls2csv -x /var/tmp/xls/$filename.xls -b WINDOWS-1251 -c /var/tmp/$filename.csv -a UTF-8"); }