Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.os.unix.shell > #14613
| From | Helmut Waitzmann <nn.throttle@xoxy.net> |
|---|---|
| Newsgroups | de.comp.os.unix.shell |
| Subject | Re: Gruppierung mit uniq für NUL-getrennte Daten? |
| Date | 2025-10-13 20:53 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <834is2eiq9.fsf@helmutwaitzmann.news.arcor.de> (permalink) |
| References | <87h5w4nr3u.fsf@vagabond.tim-landscheidt.de> <83ecr7et3g.fsf@helmutwaitzmann.news.arcor.de> <87a51vo3rm.fsf@vagabond.tim-landscheidt.de> |
Tim Landscheidt <tim@tim-landscheidt.de>:
> Helmut Waitzmann <nn.throttle@xoxy.net> wrote:
>
>> Tim Landscheidt <tim@tim-landscheidt.de>:
>>> ich möchte mit (GNU) find
>
>> (also nehme ich an, dass der GNU‐Werkzeugkoffer zur
>> Verfügung steht)
>>
>>> eine Liste von Dateien erstellen und abarbeiten, aber
>>> hardverlinkte Dateien nur einmal, sprich: Einmal pro Inode.
>
>>> Die Liste kann ich mit „find -printf '%i\0%p\0'“ erzeugen.
>>> Aber wie bekomme ich mit uniq oder anderen GNU/Linux-Bord-
>>> mitteln eine Gruppierung (in diesem Fall nur den ersten
>>> Treffer) nach Inode hin, wenn ich bei den Dateinamen belie-
>>> bige Zeichen erwarte?
>
>>> Die Pipeline:
>
>>> | find -type f -printf '%8i\t%p\0' | uniq -zw 8 | cut -zc10- | […]
>
>>> funktioniert, ist aber hässlich (und falsch, da Inodes wohl
>>> 64 Bit haben können, und man deshalb mit 20 Ziffern rechnen
>>> muss
>
>> Was empfindest du daran als hässlich?
>
> Ästhetik ist natürlich immer subjektiv, aber diese Lösung
> verlangt, dass ein Inode eine Zahl ist, maximal 64 Bit lang
> ist, etc. Für die Problemstellung ist das eine unnötige De-
> tailtiefe, denn Inodes werden dort nur als amorphe „Dinge“
> benötigt, bei denen es darauf ankommt, ob sie identisch sind
> oder nicht, und sonst nichts.
Damit hast du natürlich recht. Wenn man also nur fordern will,
dass die Inode‐Kennung nur aus einer Zeichenfolge (mit beliebigen
Zeichen ohne das ASCII‐Zeichen NUL) besteht und sonst keiner
Einschränkung unterliegt, ist selbst
find … -printf '%i %p\0'
nicht sicher genug: Eine Inode‐Kennung könnte auch Leerzeichen
enthalten.
Dann bleibt nur,
find … -printf '%i\0%p\0'
zu verwenden.
„xargs“ erkennt dann für jedes Inode‐Nummer‐Dateiname‐Paar zwei
einzelne statt einen kombinierten Parameter; und weil man „xargs“
nicht anweisen kann, die Parameter, die es erkennt, nur in
Portionen mit gerader Anzahl an das Shell zu übergeben, bleibt
dann nur die Möglichkeit, dass „xargs“ das Shell mit jeweils
genau einem Paar von Parametern aufruft.
Das macht die Kommandozeile des aufgerufenen Shells einfacher
(keine „for“‐Schleife mehr), aber erzeugt halt genau so viele
Shell‐Aufrufe, wie “find" Dateien gefunden hat:
find . -type f -printf '%i\0%p\0' |
xargs -0 -r -x -L 2 -- sh -c '
nummer="${1}" name="${2?}" &&
namen=../nummer/"$nummer" &&
printf %s\\0 "$name" >> "$namen"
' sh
Und auch hier kann man wieder, wenn man nur am jeweils ersten
gefundenen Dateinamen jedes Inodes interessiert ist, statt mit
printf %s\\0 "$name" >> "$namen"
alle Namen aufzusammeln, mit
{
test -f "$namen" ||
printf %s "$name" > "$namen"
}
nur den jeweils ersten gefundenen Dateinamen jedes Inodes (ohne
abschließendes NUL‐Zeichen) notieren.
Back to de.comp.os.unix.shell | Previous | Next — Previous in thread | Next in thread | Find similar
Gruppierung mit uniq für NUL-getrennte Daten? Tim Landscheidt <tim@tim-landscheidt.de> - 2025-10-12 14:15 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? ram@zedat.fu-berlin.de (Stefan Ram) - 2025-10-12 15:10 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-10-12 22:57 +0200
Re: Gruppierung mit uniq für NUL-getrennte Daten? Tim Landscheidt <tim@tim-landscheidt.de> - 2025-10-13 03:54 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-10-13 20:53 +0200
Re: Gruppierung mit uniq für NUL-getrennte Daten? Helmut Waitzmann <nn.throttle@xoxy.net> - 2025-10-14 01:44 +0200
Re: Gruppierung mit uniq für NUL-getrennte Daten? Christian Weisgerber <naddy@mips.inka.de> - 2025-10-14 14:00 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? Urs Janßen <urs@niko.tin.org> - 2025-10-14 06:18 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? ram@zedat.fu-berlin.de (Stefan Ram) - 2025-10-14 11:36 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? Urs Janßen <urs@niko.tin.org> - 2025-10-14 11:58 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? ram@zedat.fu-berlin.de (Stefan Ram) - 2025-10-14 15:46 +0000
Re: Gruppierung mit uniq für NUL-getrennte Daten? Stefan Reuther <stefan.news@arcor.de> - 2025-10-13 16:58 +0200
Re: Gruppierung mit uniq für NUL-getrennte Daten? Thomas Dorner <dcous251013.dorner@spamgourmet.com> - 2025-10-13 18:36 +0200
csiph-web