Tartalomjegyzék

< Linux

Munka fájlokkal

Fájlok keresése

A find parancs tesztjei:

-amin n A fájl elérési ideje n perccel ezelőtt volt
-anewer FAJL A fájl elérési ideje újabb mint a FAJL állomány
-atime n A fájl elérési ideje régebbi mint n nap
-cmin n A fájl utolsó inode változása n perccel ezelőtt volt
-newer FAJL A fájl utolsó inode változása újabb mint a FAJL állomány
-ctime n A fájl utolsó inode változása régebbi mint n nap
-empty A fájl üres
-executable A fájl futtatható
-false Mindig sikertelen
-fstype típus A fájl megadott fájlrendszeren van (pl.: ext4)
-gid n A fájl csoportazonosítója n
-group csoportnév A fájl adott csoportba tartozik
-ilname minta Szimbolikus linkek keresése, nincs kis- és nagybetű érzékenység
-iname minta Fájlok keresése, kis- és nagybetű érzékenység nincs
-inum n Adott inode számú fájl keresése

Talált fájlokon parancs futtatása

find /utvonal -type d | xargs chmod g+s
find /utvonal -type d -exec chmod g+s {} \;
find /utvonal -type d -exec chmod 755 {} \;
find /utvonal -type f -exec chmod 644 {} \;

Időbélyegek állítása

Időbélyegek:

Az elérési idő állítása:

touch -a -t 11041220

Létrehozási idő

A létrehozási idő tárolását nem tartalmazza a POSIX szabvány, azonban az ext4 fájlrendszerben már tárolásra kerül. A stat parancs viszont még nem képes olvasni azt, mivel a Linux kernel API jelenleg nem teszi hozzáférhetővé. Pedig a stat parancsban elvileg lekérdezhető:

stat -c '%w' fájl  # ember számára olvasható formában
stat -c '%W' fájl  # unix idő szerint

A debugfs és a stat parancs kombinálásával viszont kinyerhető az adat ext4 fájlrendszer esetén.

crtime megjelenítésének lépései:

Kiderítjük a kívánt fájl inode számát:

$ ls -i vmi.txt

Megnézzük melyik fálrendszeren van:

$ df -T vmi.txt

A létrehozás idejének lekérdezése:

# debugfs -R 'stat <inode_number>' /dev/sda1

A kisebb-mint és nagyobb-mint jelek kötelező elemek.

De szűrhetünk is az kívánt sorra:

# debugfs -R 'stat <269383>' /dev/sda1 | grep crtime

Létrehozási időre bash script

xstat() {
  for target in "${@}"; do
    inode=$(ls -di "${target}" | cut -d ' ' -f 1)
    fs=$(df "${target}"  | tail -2 | head -n 1 | awk '{print $1}')
    crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
    grep -oP 'crtime.*--\s*\K.*')
    good_crtime=`echo ${crtime} | date "+%Y-%m-%d %H:%M"`
    echo -e "${good_crtime}\t${target}"
  done
}

A kódot másoljuk be a ~/.bashrc vagy a ~/.profile állományba. Újabb bejelentkezés után használható.

Használat:

xstat *

A használathoz szükség van a felhasználó számára sudo jogra, a debugfs számára.

JSON fájlok

apt install jq

Egy fájl értelmezése:

jq '.' dolgozok.json
[
  {
    "az": 1,
    "nev": "Perke Béla",
    "kor": "32"
  },
  {
    "az": 2,
    "nev": "Pink Boldizsár",
    "kor": "27"
  }
]

A jq parancs használható csővezetékkel:

cat dolgozok.json | jq '.' | less

Források

Program eredeti forráskódok: