Portál AbcLinuxu, 2. srpna 2025 07:53
Zkoušel jsem si hrát s ls s různými parametry, ale když potom otevřu výsledný soubor.txt v programu gnumeric po sloupcích to správně rozdělené není.
Zkoušel jsem také výpis ls -l a potom pomocí cut vyříznout jednotlivé znaky, uložit do samostatných souborů a nakonec je spojit. Výsledek byl přesně ten co potřebuji, tj.každá hodnota ve svém sloupci, ale nešlo by to jednodušeji?
Díky.
Klidně ať jsou tam i další hodnoty (např.oprávnění r,rw...-ale nemusí tam být)
Řešení dotazu:
find ./ -type f -printf "%Ad.%Am.%AY %AH:%Am %s %p\n"
stat
stat --printf "%b\t %y\t %n\n" *
Takhle jsem to nějak potřeboval. Už nemusím sloupce "vyřezávat" ručně, ale napíšu mezi ně nějaký znak a oni se pak samy oddělí.
find "/media/root/Data/Zaznamy" -type f -printf "%Ad.%Am.%AY %AH:%AmQ %s Q%f\n"
Napsal jsem oddělovač znak Q a p jsem změnil na f, aby byl uvedený jen název nikoliv celá cesta.
Do přílohy dávám script, který jsem včera vytvořil, taky funguje.
$ find ./ -type f -printf "%Ad.%Am.%AY;%AH:%Am;%s;%p\n" 31.08.2016;18:08;4130090;./P8H67-M-PRO-ASUS-CG8250-8-0306.zipTeraz neviem. Mám niečo pokazené že mi to funguje tak ako som popisoval, alebo to máš pokazené ty že ti to nefunguje tak ako to má fungovať?
touch 'a;b'Zkus to znovu.
touch '"zkus";"to";"znovu"'
find "/media/root/Data/Zaznamy" -type f -printf "%Ad.%Am.%AY %AH:%AmQ > %s Q%f\n" BusyBox v1.22.1 (2014-07-08 19:15:19 CEST) multi-call binary. find: unrecognized: -printf Usage: find [-HL] [PATH]... [OPTIONS] [ACTIONS] Search for files and perform actions on them. First failed action stops processing of current file. Defaults: PATH is current directory, action is '-print'BusyBox v1.22.1 (2014-07-08 19:15:19 CEST) multi-call binary.
Pokud před printf dám svislítko, zobrazí se
find "/media/root/Data/Zaznamy" -type f | printf "%Ad.%Am.%AY %AH:%AmQ %s Q%f\n" find: /media/root/Data/Zaznamy: No such file or directory sh: %Ad.%Am.%AY %AH:%AmQ %s Q%f\n: invalid formatNevíte co s tím?
Napsal jsem script a použíl příkaz sed a join, zatím nevím zda je join v Openelec k dispozici, sed tam je, používám to ve scriptech. V Lubuntu to funguje.
Dal jsem to do přílohy.
unsquashfs -f "/root/Documents/SYSTEM"
z adresáře v ElementaryOS /usr/bin jsem zkopíroval soubory join a paste do adresáře /bin v Openelec
zase jsem Openelec zabalil
mksquashfs /root/squashfs-root /root/Documents/SYSTEM
V Openelec je možnost přidat do Grubu2 slovo debugging (ladění) a pomocí kláves CTRL+Alt+F3 - zpět CTRL+Alt+F1 -se dostat do terminálu na stejném PC (není nutné přes SSH).
Oba příkazy fungují (i když byly jenom obyčejně zkopírovány Ctrl+C a Ctrl+V) a příkaz paste už neodesílá logy na web jako původně, ale pracuje jako v jiných linuxech. Připojuji funkční script - spouští se v souboru /.config/autostart.sh
Díky za navedení dobrým směrem.
Jinak pro informaci:
V Openelec jsem nahradil stávající find souborem find z ElementaryOS a už jde provést výpis pomocí find (viz výše)
find ./ -type f -printf "%Ad.%Am.%AY %AH:%Am %s %p\n"
ls -lrt|tail -n+2|cut -c 23-
Ze začátku se mi to nechtělo dělit s příkazem cat po řádkách ani s uvozovkami (všechny řádky byl jeden celý dlouhý řádek) ani bez (každé slovo bylo na jednom řádku), ale pak jsem někde našel, že musí být na začátku scriptu výraz IFS=$'\n'. Tím se dělí řádky podle \n - to tam dodá awk. Nemusím už potom používat cyklus for. Řádky očísluji sedem (cat -n nejde v Openelec, nl taky ne), seřadím sortem podle třetího pole, parametrem -u odstraním duplicitní řádky, pomocí cut odříznu první pole s číslováním řádků a uložím.
Funguje přesně tak jak jsem chtěl, tj.každá hodnota ve svém sloupci (datum a čas, velikost v bytech a název).
I když to vypadá kostrbatě, funguje to bezvadně cca už skoro rok.
Jinak ten bash script na výpis ze složky funguje taky výborně, sloupce jsou odděleny a datum a čas je už ve formátu datum a čas (nikoliv text), takže se dá různě formátovat a řadit v Gnumeric nebo Excel aj....
To je ošetrenie vstupu, eskejpovanie je trošku niečo iné.Ne.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.