( novarobot | 2020. 06. 17., sze – 18:55 )

Köszönöm az észrevételeket, a megfogalmazásbeli és gépelési problémákat javítottam.

Ez a könyvtárbejárós megoldás meggondolandó, már elkezdtem a megvalósítását bár sebességbeli és működésbeli kétségeim vannak ugyanakkor mindenképpen érdemes kipróbálni.

A gondom hogy a szükséges információk lekérdezésére nem nyújt megoldást, mert nem a "find ."  a lassú hanem a foreach (egyébként maga a programhívás a lassú) és ez nem lesz gyorsabb attól ha máshogy kérdezem le a fáj listát...

(A kész fájl listán végigmenni szerintem a leggyorsabb, bár nem a "legszebb" megoldás.

A Perl ben lévő stat() függvény meg nem tudja az összes szükséges információt lekérdezni és rendszerenként eltérő a visszakapott tömb szerkezete.

Elfelejtettem írni hogy pontosan miket kérdezek le a fájlokról:

%A   hozzáférési jogok ember által olvasható formában   <---- Ugye ez az amivel szenvedek
%a   hozzáférési jogok oktálisan (figyeljen a „#” és „0” printf jelzőkre)
%s   teljes méret, bájtokban
%f   nyers mód hexadecimálisan
%F   fájltípus
%h   hard linkek száma
%i   I-node szám
%u   a tulajdonos felhasználói azonosítója
%g   a tulajdonos csoportazonosítója
%U   a tulajdonos felhasználóneve
%G   a tulajdonos csoportneve
%W   a fájl születési ideje az Epoch óta eltelt másodpercekként
%Y   utolsó módosítás ideje az Epoch óta eltelt másodpercekként
%Z   utolsó változtatás ideje az Epoch óta eltelt másodpercekként
%X   utolsó hozzáférés ideje az Epoch óta eltelt másodpercekként
%w   a fájl ember által olvasható születési ideje
%y   utolsó módosítás ember által olvasható ideje
%z   utolsó változtatás ember által olvasható ideje
%x   utolsó hozzáférés ember által olvasható ideje
%N   idézőjelek közé tett fájlnév, követéssel, ha szimbolikus link

Sajnos se a Perl beépített "stat" függvénye se az "ls" nem tud ezek közül mindent (az "ls" csak létrehozási, változtatási és a hozzáférési időt nem tudja...)

A getfacl-t meg direkt csak azokra a fájlokra hívom meg ahol van ACL, mert minden fájlra nagyon nagyon sokáig tartana, pont ezért kell nekem az a "+" jel.

Eredetileg shell ből akartam megoldani hogy valahogyan összekötni az ls-t meg a stat -ot hogy egymásután írja ki mindegyik a maga "részét" de az nem jött össze.

Ilyesmikkel próbálkoztam:

find . -exec (ls -l -d {} & stat --printf '%A\t%a\t%s\t%f\t%F\t%h\t%i\t%u\t%g\t%U\t%G\t%W\t%Y\t%Z\t%X\t%w\t%y\t%z\t%x\t%N\n' {} ) \; > test.csv

find . -exec (ls -l -d {} ; stat --printf '%A\t%a\t%s\t%f\t%F\t%h\t%i\t%u\t%g\t%U\t%G\t%W\t%Y\t%Z\t%X\t%w\t%y\t%z\t%x\t%N\n' {} ) \; > test.csv

find . -exec ls -l -d {} & stat --printf '%A\t%a\t%s\t%f\t%F\t%h\t%i\t%u\t%g\t%U\t%G\t%W\t%Y\t%Z\t%X\t%w\t%y\t%z\t%x\t%N\n' {}  \; > test.csv

De sehogy nem jött össze, meg hát nagyon bosszant hogy mindegyik paranccsal van valami "apróság" ami miatt nem jó.

Van még javaslat, hogy merre nézelődjek, Perl hívás ami esetleg jó lehet vagy alternatív stat amit meg tudok hívni?