Portál AbcLinuxu, 24. července 2025 07:15
Zálohovací script udělá jako poslední
find . -type "f" -exec sha1sum -b {} >> kontrola.sha1 \;
Jenomže find najde i rozpracovaný soubor kontrola.sha1, připíše ho do sebe a potom je tento soubor vždy vadný. Potřeboval bych v příkazu find něco jako
-name not "kontrola.sha1"
Problém nejde obejít vynecháním find, tedy voláním samotného
sha1sum -b * > kontrola.sha1
protože soubory jsou poschovávány i v podadresářích. Předem díky za nápady.
No to by také šlo. Ale čekal bych řešení v parametrech samotného find, vždyť je to ohromný a nabušený nástroj.
find . -type "f" -name ! "kontrola.sha1" -exec sha1sum -b {} >> kontrola.sha1
find . -type "f" -name (! "kontrola.sha1") -exec sha1sum -b {} >> kontrola.sha1(se závorkama), ale nezkoušel jsem to takže nevím, jestli jsou potřeba.
find . -type f ! -name "kontrola.sha1" -print0 | xargs -0 sha1sum -b > kontrola.sha1
find ... | xargs sha1sum ... > ...
A ten kontrolní soubor dávej mimo prohledávaný adresář. Pokud použiješ to, co ti radí nade mnou, pak budeš vynechávat i soubory kontrola.sha1, které v té adresářové struktuře opravdu jsou. Sice můžeš argumentovat, že tam žádné nemáš, ale není to dobrý a obecný přístup find . ! -wholename ./kontrola.sha1
Díky všem za rady. Je hodně způsobů, a i když mi stačí jeden, dost jsem se toho naučil.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.