Portál AbcLinuxu, 5. května 2025 18:45

Dotaz: Jak pracovat se soubory skrze jejich inode

1.1.2021 18:41 tom
Jak pracovat se soubory skrze jejich inode
Přečteno: 470×
Odpovědět | Admin
Zdravim,

casto potrebuji v BASHi zpracovavat soubory z nejakeho adresare, a vecne se peru s jejich nazvy, ktere casto obsahuji vselijake podivne znaky. Ne kazdy program se s timto dokaze popasovat

A tak me napada, ze v EXT fs musi mit preci kazdy soubor svuj jedinecny INODE, neco jako ID v databazi. Tak proc k tem souborum nepristupovat pres jejich inode a vykaslat se na jejich nazvy?

Koukal jsem, ze napr. program FIND ma prepinac -inum. Ale takovy ffmpeg, resp. jeho MAN stranka, o nejakych inodech nema sajn.

Mam tady napr. adresar *.MP4 videi, a potrebuji ze vsech pouze vyextrahovat zvukovou stopu. Patricny prikaz znam, ale jde ty soubory naservirovat ffmpegu pres jejich inode?

Diky za vas cas a vse NEJ do noveho roku


Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Heron)
Jendа avatar 1.1.2021 19:50 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud víš alespoň to, že v názvu není newline, tak se to správně dělá přes find ... | while read f; do ... $f; done. Pak se to ještě dělá přes find ... -print0 | xargs -něco a find ... -exec.

Druhá možnost je ten skript naprogramovat v nějakém jazyce, kde s tímhle problémy nejsou. Například v Pythonu. Ale chápu, že se ti do toho nechce, mně se některé věci taky dělají v shellu líp.
Heron avatar 1.1.2021 20:43 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
Odpovědět | | Sbalit | Link | Blokovat | Admin
find -print0 | xargs -0

man xargs:
-0      Change xargs to expect NUL (``\0'') characters as separators,
instead of spaces and newlines.  This is expected to be used in
concert with the -print0 function in find(1).
Případně podobně pomocí parallel.

man parallel
-0  Use NUL as delimiter.  Normally input lines will end in \n
   (newline). If they end in \0 (NUL), then use this option. It is
   useful for processing arguments that may contain \n (newline).
Heron
Jendа avatar 1.1.2021 21:22 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
parallel je dobrý nápad, pokud tím ffmpegem kóduje video, bude lepší spustit více ffmpegů současně s méně vlákny (minimálně pro x264). Jenom bych chtěl upozornit, že existují dva parallely - jeden z balíku moreutils, ten používám já a je to ten co zmiňuješ, a jeden GNU Parallel, ten je nějaký divný.
Heron avatar 1.1.2021 21:37 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
Tohle je parallel z FreeBSD a ten je GNU. Jinak ano, na linuxu jsem narazil na dva. Čím se přesně liší nevím (pro můj účel fungují oba), akorát jeden pořád otravoval s cite (což má snadné řešení) (a asi je to právě ten GNU). Parallel používám, protože se mi v něm snadněji formátují argumenty (konstrukce {}, {.})

Jinak xargs také umí spustit příkaz paralelně. Viz -L a -P

Nuphar avatar 3.1.2021 11:48 Nuphar | skóre: 19
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
Používám výhradně GNU Parallel. V čem má být divný? Já s ním jsem naprosto spokojený. :-)
Per aspera, Asparagus et Aspergillus ad a/Astra!
Jendа avatar 3.1.2021 12:34 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak pracovat se soubory skrze jejich inode
Tak jsem právě zjistil, že to mám naopak a používám GNU Parallel a naopak ten z moreutils je divný. V čem? No nefunguje tak že mu napajpuješ příkazy, jeden na řádek, a on je vykoná :-)
~> for i in `seq 1 10`; do echo bash -c \"sleep 1\; echo $i\"; done |parallel
[čekání 1s]
1
2
3
4
5
6
7
8
[čekání 1s]
9
10
~> for i in `seq 1 10`; do echo bash -c \"sleep 1\; echo $i\"; done |parallel.moreutils 
[nic]
~> 

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.