Portál AbcLinuxu, 14. května 2025 01:46

Dotaz: Script pro nalezení a opravu souborů ...

22.4.2010 01:02 Martin B.
Script pro nalezení a opravu souborů ...
Přečteno: 278×
Odpovědět | Admin
Zdravím,

řeším takový nečekaný problém, kolegové přechází z Apple na Windows a narazil na fakt, že některé soubory/složky jsou pro Win nečitelné, tedy využívají něco se znaků " \ / : ? * „ > < | NULL " v názvech souborů a adresářů.

Existuje cesta jak to nějak pomocí vhodného scriptu ošetřit ?? Ručně to je nereálné jde o cca 5 TB dat :-(

Řešení dotazu:


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

Odpovědi

Jakub Lucký avatar 22.4.2010 01:21 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Script pro nalezení a opravu souborů ...
Odpovědět | | Sbalit | Link | Blokovat | Admin
detox ?
If you understand, things are just as they are; if you do not understand, things are just as they are.
22.4.2010 16:04 Martin B.
Rozbalit Rozbalit vše Re: Script pro nalezení a opravu souborů ...
Díky moc, to je přesně ono, jinak jsem ještě po dlouhém hledání našel něco tady (http://www.abclinuxu.cz/poradna/linux/show/213211) ... nicméně proč psát vlastní script, když existuje detox navíc existuje v portech i pro OSX, takže budu mít o problém méně ...

Ještě jednou díky moc.
29.4.2010 10:07 Martin B.
Rozbalit Rozbalit vše Re: Script pro nalezení a opravu souborů ...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak bohužel detox to neřeší, nezvládne češtinu v UTF_8, nahrazuje ji chaotickými znaky :-(
29.4.2010 12:16 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Script pro nalezení a opravu souborů ...
A něco jako:
find /cesta/co -exec /mojecesta/spravto.bash {} \;
Samozřejmě je možné a asi vhodné find modifikovat, třeba přidat -type f nebo i doplnit regular expresion co hledat třeba něco takto:
find /cesta/co -type f -regex '.*[\\:\?\*„“\>\<\|\x0].*' -exec /mojecesta/spravto.bash {} \;

a v spravto.bash něco jako:

#!/bin/bash
FROM="$1"
TO="${1//[\\:\?\*„“\>\<\|\x0]/_}"
#FROM="${FROM//\*/\\*}"
#FROM="${FROM//\?/\\?}"

if [ "$FROM" != "$TO" ]; then
 echo mv "$FROM" "$TO"
fi
Předposlední řádek ma navíc 'echo' k vůli bezhlavému kopírování odcamcáď. Takže je třeba 'echo' smazat aby to něco začalo dělat nebo použít rúčo to co to vysype - s tím echo to jen vypíše co by to tak mohlo dělat.
PS: toto si neporadí s '/' v názvu souboru či adresáře a není to možné „jen tak“ doplnit do regular expresion.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

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.