Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Linux: wie finde ich "unmögliche" zeichen in dateinamen?

Mitglied: klausph

klausph (Level 1) - Jetzt verbinden

04.02.2015, aktualisiert 13:47 Uhr, 897 Aufrufe, 5 Kommentare, 1 Danke

guten tag
nach stundenlangen studium von "dem kofler" und anderen grundlagenwerken weiss ich nicht weiter.

es geht um folgendes:

eine NAS von qnap. drauf ist ein linux (es gibt keine exakte bezeichnund dafür!), shell-aufgaben erledigt die BusyBox [v1.01 (2015.01.25-18:35+0000) multi-call binary]. IRGENDWANN vor einigen jahren hat es meinerseits wohl versuche gegeben, mit robocopy oder anderen (windows)kopierern dateien raufzukopieren. da muss einiges (aber weniges!) schief gegangen sein.

wenn ich heutzutage mit meinen robocopy-scripts rangehe, um von einer NAS auf die backup-NAS zu kopieren, bekomme ich wenige (aber störende!) fehlermeldungen wie:
\\qnap\allegro\_DATA\STN\_intranet_alt\www\scripts\ruckzuck\php_neu\bilder\ Zlter
2015/02/04 08:59:48 FEHLER 123 (0x0000007B) Folgende Datei wird kopiert \\qnap\allegro\_DATA\STN\_intranet_alt\www\scripts\ruckzuck\php_neu\bilder\
Die Syntax f?r den Dateinamen, Verzeichnisnamen oder die Datentr"gerbezeichnungist falsch.

\\qnap\allegro\_DATA\TZM\
\\qnap\allegro\_DATA\TZM\_boehlke\
....

auf den ersten blick übersieht man das leicht. aber in wirklichkeit gibt es auf der quellen-NAS, wenn man mit dem mc raufschaut, eine datei, die hat einen umlaut, der aber als klötzchen angezeigt wird. es ist m.E. hex81, das kann man sehen, wenn man ls > datei macht, und mit dem mc und F3 und hex-modus sich das anschaut.

ist dieser umlaut IN EINEM subdir enthalten, dann rastet robocopy völlig aus, und verweigert jegliche kopiererei im dazugehörigen stammverzeichnis. da gibt es dann plötzlich "leere" verzeichnisse oder so. das bedeutet auf dem backup-NAS datenverlust.

ich habe nun mit windowsmitteln KEINE change, mich den sudirs zu nähern. windows kann sie nicht einlesen. ich muss also auf der linux-ebene weitermachen.
OK!

Frage: wie findet man in linux dateien und oder unterverzeichnisse, die "unmögliche" zeichen haben?
man kann ja damit anfangen, erstmal alle deutschen umlaute abzufragen. oder nur das deutsche "ü" (hex81).
ich denke, das geht, oder müsste gehen mit: find

mein test hat aber nichts gebracht:
sh-3.2# find . -type f -name \*\h81\*
./RSB/_neu_2012_7/hans2000/prg/h816

ok. abwandlungen wie:
sh-3.2# find . -type f -name \*\x81\*
sh-3.2# find . -type f -name ~\*\x81\*~
sh-3.2# find . -type f -name ~*\x81*~
bringen aber nichts!
da, ab dem punkt ist aber eine datei die "ein klötzchen" im namen drin hat.....

was mir klar ist: mit \ muss ich escapen
aber ~ scheint nichts zu bringen.

und: ich hoffe, daß die BusyBox das "original"-find eingebaut hat. und nicht nur einen geringeren umfang uns gibt....

ein weg, der mir übrigbleibt: alle robocopy-logdateien nach "FEHLER 123" per hand zu durchsuchen, und dann weiter in der Nähe des angegebenen ortes suchen. (3 TB warten auf mich, mit riesigen zeichenbäumen..... ;-(

letzte die ?entscheidende? frage:
wie kann man mit find nach einem hex-wert suchen?
\x81 klappt nicht.



danke fürs mitdenken
euer klaus(i)
Mitglied: klausph
04.02.2015 um 14:16 Uhr
mönsch jodel32.
ich habe doch natürlich unter administrator.de gesucht, wie ein weltmeister. den beitrag oben nicht gefunden. es kam mir schon komisch vor (nix zu finden). DANKE!

so: wie ich's mir fast dachte: die busybox spielt nicht mit. ich musste aus dem skript 2x "-depth" entfernen.

danach gelang der aufruf. aber ohne ergebnis.
ich werde mal die sonderzeichen aus der mac-welt da einbauen. mal schauen.
aber dann kommen wir doch noch zu der frage: wie baue ich das hex81 ein?
mal sehen, ob ich die antwort selber finde...

zwischengruß k.l.
Bitte warten ..
Mitglied: klausph
04.02.2015 um 14:46 Uhr
etwas angepasst:
2x "-depth" ist weg!
statt dem _, was er anstelle schreiben soll, will ich ja an die dateien rankommen, also soll erschreiben: "__zzyyxx__" statt des einen buchstabens. das kann ich dann prima mit updatedb und locate suchen.

trotzdem DAS problem:
man scheint mit find nicht sowas definieren zu können: -name "*[\x81]*"
hexwerte suche ich damit also nicht.

dann definieren wir doch anderes!
suche alles, was nicht [A-Z, a-z, 0-9] entspricht. mal schauen


erstmal das minimalst veränderte skript:

#!/bin/bash.
find . -name "*[\<\>/\*\?\|\"\:]*" | while read FILEDIR
do
DIR="${FILEDIR%/*}"
FILE="${FILEDIR/*\/}"
NEWFILE="${FILE//[\<\>\/\*\?\|\"\:]/__zzyyxx__}"
mv "$DIR/$FILE" "$DIR/$NEWFILE"
done
find . -name "*?." -type d | while read DIR
do
NEWDIR="${DIR/%./}"
if ! test -d "$NEWDIR" ;then
mv "$DIR" "$NEWDIR"
fi
done

gruß k.l.
Bitte warten ..
Mitglied: klausph
04.02.2015 um 15:07 Uhr
großes lob an geist des forums: administrator.de!
genau DAS ist es: (hoffentlich) mitdenkende fragesteller wissen nicht weiter, bekommen anregungen (keiner verlangt fertige lösungen
und kommen so zum ziel.

also:
"schaut auf diese stadt", hat kennedy gesagt! (ca 1962...)
also
schaut auf dieses skript: (mit berücksichtigung der BusyBox! argh!)

#!/bin/bash
find . -name "*[!A-Z!a-z!0-9!-!_!.]*" | while read FILEDIR
do
DIR="${FILEDIR%/*}"
FILE="${FILEDIR/*\/}"
NEWFILE="${FILE//[!A-Z!a-z!0-9!-!_!.]/__zzyyxx__}"
mv "$DIR/$FILE" "$DIR/$NEWFILE"
done
find . -name "*?." -type d | while read DIR
do
NEWDIR="${DIR/%./}"
if ! test -d "$NEWDIR" ;then
mv "$DIR" "$NEWDIR"
fi
done

so habe ich mir das gedacht:
er benennt alle dateien um, die keine normalen buchstaben haben (also A-Z und a-z), die auch keine ziffern haben (0-9, und in den dateinamen darf ein _, sowie ein - und natürlich der punkt vorkommen.
mit anderen worten: alles dem o.g. muster NICHT entspricht, bekommt "__zzyyxx__" im dateinamen. das kann man dann im 2. schritt suchen und kontrollieren und dann löschen.
bin sicher, das skript ist noch nicht perfekt. es wird noch zeichen geben, die ich "erlauben" muss.... mal schauen.

gruß k.l.
Bitte warten ..
Mitglied: klausph
04.02.2015, aktualisiert um 19:28 Uhr
am 4.2.2015 nochmal ergänzt. und fertig!

letztenendes benötige ich NUR diese beiden zeilen:

#!/bin/bash
find . -name "*[!A-Z!a-z!0-9!\-!_!.!@!#!=! !\(!\)!~!\$!&!ö!ä!ü!+!,!.!;!\[!\]!Ä!Ü!Ö!'!%!ß!§!{!}!'!\´!\`!é!è!^!:]*"

erklärung:
jedes der zeichen, die für meine fehlersuche NICHT interessant ist, also NICHT angezeigt werden soll, ist mit einem "!" gekennzeichnet.
einige wenige zeichen MÜSSEN nach dem "!" mit einem "\" versehen werden.
z.b. das zeichen ] . MUSS oben so eingetragen werden: !\]

ich lasse dieses miniskript ab einem bestimmten verzeichnis laufen, und sehe sofort, was ist schräg ist, was ist OK.

neugierige fragen:
man kann evtl. noch obiges verbessern!?

sowie man schreibt !A-Z (was ja heisst: alles was nicht großes A bis oder großes Z ist, berücksichtige bitte...)

könnte man nicht schreiben?:
! -/ soll heissen: vom leerzeichen hex20 bis zum /
hex2f. evtl muss hex2f mit \ "escaped" werden

mir wäre viel wohler, wenn ich diese konstruktion mit A-Z so schreiben könnte: 065-090 oder x41-x5a ...
leider keine ahnung... in den docus zu find gibt keine hinweise...

gruß klaus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Finden von (fast) gleichen Dateinamen, Ändern von Dateinamen

gelöst Frage von internet2107Batch & Shell8 Kommentare

Ich habe leider mal wieder eine etwas knifflige Sache. Aktuell suche ich in Verzeichnissen nach Dateien mit gleichen Namen ...

Batch & Shell

Bei Dateinamen nur erste paar Zeichen beachten

gelöst Frage von XXXBoldBatch & Shell4 Kommentare

Guten Abend Ich habe folgendes Problem: Ich habe einen Ordner mit verschiedenen dateien, die alle sehr lange, recht komplizierte ...

Debian

Kann Linux nicht im bios finden!

Frage von pixelBfDebian3 Kommentare

Hallo, ich bin neu hier im Forum und will mir kali Linux installieren, weil ich es für die Schule ...

Windows Server

Tool zur Beschränkung Dateinamen und Pfade grösser 256 Zeichen

Frage von LarasanWindows Server3 Kommentare

Hallo vielleicht kann mir hier jemand helfen. Wir haben ein Filesystem Netapp-Basis mit CIFS Freigaben. Darauf greifen viele MAC ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 7 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 8 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Viren und Trojaner
Neue Avira Management Console Egosecure
Information von OSelbeck vor 1 TagViren und Trojaner1 Kommentar

Hallöchen zusammen, ich weiß nicht, wer von euch noch Avira einsetzt Wir haben ein paar Kunden Avira hatte ja ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
Frage von YellowcakeExchange Server16 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server12 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...