Реестр приложений с FTP сервера

Задача:

Поиск всех exe-файлов на ftp-сервере, имя не должно содержать знак тильды.
Выводить имя владельца и группы файла, дату модификации, путь и имя файла.

find /usr/ftp/pub/sklad/bin/ -type f -name "*.exe" -exec ls -laE {} \; | grep -v "~" | sed 's@/usr/ftp/pub/sklad/bin/@@' | awk '{print $3","$4","$6","$9}' > /tmp/sklad.txt

В файл /tmp/reestr.txt запишется информация в таком виде:

asoft,dba,2018-02-02,CONTROL_PASSES/control_passes.exe
devsklad,dba,2015-01-19,CREDIT/credits.exe
devsklad,dba,2013-12-27,CREDIT/Credits/credits.exe
asoft,dba,2014-07-01,MASSCALC1/masscalc_carriage.exe
asoft,dba,2015-02-20,FRPrint.exe
asoft,dba,2016-12-27,PORTALS/RegKS2.exe
asoft,dba,2016-07-07,NMAInstaller/NMAInstaller.exe
asoft,dba,2017-01-16,TOOLS_REPAIR/tools_repair.exe

Нужно вывести эту инфу в особом формате:

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

Сделал через:

awk -F',' '{OFS=","}{n=split($4,A,"/");print NR,$1,$2,$3,$4,A[n]}' /tmp/sklad.txt

723,asoft,dba,2018-02-02,CONTROL_PASSES/control_passes.exe,control_passes.exe
724,devsklad,dba,2015-01-19,CREDIT/credits.exe,credits.exe
725,devsklad,dba,2013-12-27,CREDIT/Credits/credits.exe,credits.exe
726,asoft,dba,2014-07-01,MASSCALC1/masscalc_carriage.exe,masscalc_carriage.exe
727,asoft,dba,2015-02-20,FRPrint.exe,FRPrint.exe
728,asoft,dba,2016-12-27,PORTALS/RegKS2.exe,RegKS2.exe
729,asoft,dba,2016-07-07,NMAInstaller/NMAInstaller.exe,NMAInstaller.exe
730,asoft,dba,2017-01-16,TOOLS_REPAIR/tools_repair.exe,tools_repair.exe

split($4,A,"/") - разбивает содержимое $4 с помощью разделителя "/" и помещает результат в массив A.
n - длина массива A, и, соответственно, когда выводим A[n] - получаем имя файла (команда типа basename не работает, т.к. awk - это другой самостоятельный язык, у него нет такой команды)
NR - вывод номера записи

Оставьте комментарий