Tartalomjegyzék
Munka fájlokkal
- Szerző: Sallai András
- Copyright © Sallai András, 2018, 2019
- Web: https://szit.hu
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:
- atime – access time – utolsó hozzáférés ideje
- mtime – modify time – utolsó módosítás ideje
- ctime – change time – inode változás ideje
- crtime – create time – létrehozás ideje
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:
