Portál AbcLinuxu, 25. dubna 2024 16:40


Dotaz: Bash - Porovnávávaní adresářů. Dotaz

4.10.2009 00:57 John
Bash - Porovnávávaní adresářů. Dotaz
Přečteno: 156×
Odpovědět | Admin
Ahoj , potřeboval bych při porovnávání dvou adresářů vypsat soubory a adresáře, které se v jednom nebo druhém adresáři nevyskytují. A jestli by to šlo tak nejak přimo, ne přes pomocný soubor nebo tak. Diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.10.2009 08:03 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Bash - Porovnávávaní adresářů. Dotaz
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud by stačilo GUI, mrkni na dirdiff.

4.10.2009 08:25 l4m4
Rozbalit Rozbalit vše Re: Bash - Porovnávávaní adresářů. Dotaz
Uch, pokud už budu spouštět něco, co zbytečně leze do souborů a porovnává je namísto zjištění jejich existence, tak stačí normální diff:
diff -rq --text dir1 dir2 | sed '/^Files .* differ/d;s#Only in \(.*\): \([^/]*\)#\1/\2#'
4.10.2009 09:03 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Bash - Porovnávávaní adresářů. Dotaz

Jasně, na pouhou existenci souborů je to asi overkill. Ale je výborný třeba pro převedení konfigurace staršího softu na nový, když je konfigurace v řadě souborů v samostatné adr. struktuře, nebo rovnou přes celé /etc

4.10.2009 08:21 l4m4
Rozbalit Rozbalit vše Re: Bash - Porovnávávaní adresářů. Dotaz
Odpovědět | | Sbalit | Link | Blokovat | Admin
uniq naneštěstí neumožňuje nastavit field delimiter, takže jednoduché find | sort | uniq nejde použít pro vypsání unikátních souborů z obou adresářů zároveň. Výpis unikátních v dir1:
find dir1 dir2 dir2 -printf '%P\n' | sort | uniq -u
4.10.2009 14:58 deadmail
Rozbalit Rozbalit vše Re: Bash - Porovnávávaní adresářů. Dotaz
Odpovědět | | Sbalit | Link | Blokovat | Admin
comm -3 <(ls -A DIR1) <(ls -A DIR2) ... vypise do dvoch stlpcov (podla toho v ktorom adresari sa nachadza)

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.