Problem att söka exotiska bokstäver i filnamn

Permalänk
Medlem

Problem att söka exotiska bokstäver i filnamn

Jag ska ladda upp ett stort material på cloud-lagring, för samarbete med arbetslag osv. Det är ett material på drygt tusen filer totalt.

Innan jag laddar upp så vill jag minska risken för fel på grund av exotiska filnamn och exotiska tecken i filnamnen, typ komma-tecken, dubbla mellanslag, å ä ö och andra liknande saker. Jag vill alltså söka igenom alla filnamnen efter förekomster av icke-standard-tecken och en del andra liknande saker, för att kunna döpa om alla filer som har sånthär i filnnamnen.,

Men jag har ett problem att lyckas med det när jag söker i Windows 10 file explorer (alltså den normala sökfönstret upp till höger). Om jag t.ex. söker efter tecknet "å", då listas alla förekomster av bokstaven"a" och även en del varianter typ typ à och så vidare. Jag upplever liknande problem med de flesta exotiska tecken eller filnamnskombinationer jag söker på.

Finns det sätt som man kan ställa in sökningen på, eller kanske söka efter ASCII-kombinationer och liknande? Hur kan jag formulera sökningen så den hittar precis vad jag söker?

Tack för hjälp och tips

Permalänk
Rekordmedlem

Det går ju att söka i kommandotolken eller så fuskar du och söker i nån mer avancerad filhanterare, FreeCommander verkar söka "rätt" https://freecommander.com/en/summary/

Advanced Renamer kan kanske hjälpa dig att döpa om vad det nu handlar om då det är ganska lätt att ange saker att radera eller byta ut i fil och mappnamn
https://www.advancedrenamer.com/

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Medlem

Reguljära uttryck (regular expressions) kan ganska lätt söka efter specifika tecken eller alla tecken utanför en viss mängd (icke latinska bokstäver och siffror)

Permalänk
Medlem

@mrqaffe: Tackar för tips.
Freecommander har jag testat nu ett tag, och jag hittar faktiskt inte hur man söker igenom en hel katalogstruktur efter filer med namn som innehåller Å, Ä eller Ö.
Advanced Renamer är vad jag använde innan, och den är mysko,. Den hittar och ändrar Å, Ä eller Ö i filnamn ibland, men ibland inte. JAg har sökt som en dåre efter varför, men jag har inte lyckats knäcka nyckeln till beteendet.
Överlag så har jag provat 7-8 stycken avancerade renaming-program och inget utav dom kunde söka och replace-a Å och Ä mot A, och Ö mot O. Alla andra ersättningar gick jättebra, men inte ÅÄÖ.

Hur man söker efter exotiska tecken i DOS-prompten, som är notoriskt känd för att hata just ÅÄÖ, och dessutom söker upp och ersätter dessa bokstäver i filnamn .. det vete tusan ...?

Skrivet av medbor:

Reguljära uttryck (regular expressions) kan ganska lätt söka efter specifika tecken eller alla tecken utanför en viss mängd (icke latinska bokstäver och siffror)

Jag har sökt på internet, men jag verkar ha svårt att hitta hur man söker genom mappstrukturer efter filer vars namn innehåller exotiska tecken. Det närmaste jag kommer, är att få Windows söka efter Å, men den inkluderar då alla A-baserade tecken i sökningen. Alltså inte bara Å, utan A, a, À, Ä, och alla såna.
Känner du till hur man gör, eller har tips på läsmaterial?

Permalänk
Hedersmedlem

Powershell!

Hur definierar du "exotiska tecken"? Det bästa är att börja med en lista av tecken som du vet är okej, och sedan använda powershell och lite regulära uttryck för att söka.

Så här:

1. Starta Powershell. (Det finns redan på datorn i alla moderna Windows-versioner, du behöver inte installera något.)
2. Byt till katalogen du ska söka i med hjälp av det här kommandot:

cd 'C:\Sökväg\Till\Katalogen'

3. När du står i den katalogen, kör det här kommandot:

Get-ChildItem -Recurse | Where Name -notmatch '^[A-Za-z0-9 -.]+$'

Vad kommandot gör är att den söker efter alla filer vars namn inte matchar det regulära uttrycket ^[A-Za-z0-9 -.]+$.

Get-ChildItem -Recurse tar fram en lista på alla filer i den katalog du är ute efter. -Recurse betyder att den även går in i underkataloger och tittar.

| Where Name -notmatch '^[A-Za-z0-9 -.]+$' filtrerar sedan listan på filer så att endast filer vars namn INTE matchar det regulära uttrycket ^[A-Za-z0-9 -.]+$ visas.

"Fnuttarna" (') kring det regulära uttrycket är till för att Powershell ska behandla det som en sträng bokstavligen. Enda du egentligen bör tänka på ur Powershell-perspektiv är att du behöver skriva '' (två fnuttar) när du menar ' i en '-citerad sträng.

Resten av det regulära uttrycket är ändå rätt enkelt. ^ står för "början av namnet", och $ står för "slutet på namnet". Att sätta ^ och $ i början och slutet betyder att det inte får finnas något annat än [A-Za-z0-9 -.]+ i filnamnet.

[A-Za-z0-9 -.] betyder att matcha ett tecken, i det här fallet allt mellan A och Z, allt mellan a och z, allt mellan 0 och 9, mellanslag, bindestreck, och punkt. +-tecknet efteråt säger "ett eller flera såna tecken". D.v.s. du letar efter filnamn som endast innehåller de tecken du är ute efter. Vill du tillåta fler tecken är det bara att skriva in dem mellan hakparanteserna. Vissa specialtecken måste du dock skriva \ framför inuti din regex, annars funkar det inte.

Genom att vi sedan använt operatorn -notmatch så betyder det att vi alltså bara plockar fram filer som INTE bara innehåller okej tecken.

Lycka till.

Lite ytterligare läsning för den intresserade:
Powershell 7: About Regular Expressions
Powershell 7: About Quoting Rules

Permalänk
Medlem
Skrivet av Dooley:

Hur man söker efter exotiska tecken i DOS-prompten, som är notoriskt känd för att hata just ÅÄÖ, och dessutom söker upp och ersätter dessa bokstäver i filnamn .. det vete tusan ...?

Den klassiska DOS-prompten är ju något begränsad, men det betydligt modernare PowerShell (inkluderat i alla moderna WIndows-versioner) är kraftfullare och betydligt mer flexibelt. Jag är säker på att det går att sätta ihop något med PowerShell som gör vad du vill.