mcommon
Anmeldungsdatum: 3. Februar 2014
Beiträge: 76
Wohnort: Mönchengladbach
|
Hallo! Ich habe einen Mikro SD Chip (SanDisk) den ich in meiner Kamera benutze. fdisk -l:
| Disk /dev/sdf: 1977 MB, 1977614336 bytes
62 heads, 61 sectors/track, 1021 cylinders, total 3862528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdf1 135 3862527 1931196+ 6 FAT16
|
Auf dem befinden sich Dateien mit Fragezeichen, die ich nicht entfernen kann:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | # ll
total 106336
drwxr-xr-x 3 root root 32768 Sep 8 1980 **/
-rwxr-xr-x 1 root root 20025384 Sep 8 1980 ?1030303.???*
-rwxr-xr-x 1 root root 1739027 Sep 8 1980 ?1030308.???*
-rwxr-xr-x 1 root root 20025384 Sep 8 1980 ?1030308.???*
-rwxr-xr-x 1 root root 2341818 Sep 18 1980 ?1030309.???*
-rwxr-xr-x 1 root root 20025384 Sep 18 1980 ?1030309.???*
-rwxr-xr-x 1 root root 2130841 Sep 18 1980 ?1030310.???*
-rwxr-xr-x 1 root root 20025384 Sep 18 1980 ?1030310.???*
-rwxr-xr-x 1 root root 2238771 Sep 18 1980 ?1030311.???*
-rwxr-xr-x 1 root root 20025384 Sep 18 1980 ?1030311.???*
drwxr-xr-x 2 root root 32768 Apr 28 18:27 foto_jpg/
-rwxr-xr-x 1 root root 0 Apr 28 18:35 New.txt*
|
Wenn ich z.B. die Dateien verschieben versuche, passiert Folgendes:
1
2
3
4
5
6
7
8
9
10
11
12
13 | # for filename in *; do mv "$filename" "$(echo $filename | tr '?' '-')" ; done
mv: cannot move ‘**’ to a subdirectory of itself, ‘** \0201030303.\022\001\023 \0201030308.\n\020\003 \0201030308.\022\001\023 \0201030309.\n\020\003 \0201030309.\022\001\023 \0201030310.\n\020\003 \0201030310.\022\001\023 \0201030311.\n\020\003 \0201030311.\022\001\023 foto_jpg New.txt’
mv: ‘\0201030303.\022\001\023’ and ‘\0201030303.\022\001\023’ are the same file
mv: cannot move ‘\0201030308.\n\020\003’ to a subdirectory of itself, ‘\0201030308. \020\003’
mv: ‘\0201030308.\022\001\023’ and ‘\0201030308.\022\001\023’ are the same file
mv: cannot move ‘\0201030309.\n\020\003’ to a subdirectory of itself, ‘\0201030309. \020\003’
mv: ‘\0201030309.\022\001\023’ and ‘\0201030309.\022\001\023’ are the same file
mv: cannot move ‘\0201030310.\n\020\003’ to a subdirectory of itself, ‘\0201030310. \020\003’
mv: ‘\0201030310.\022\001\023’ and ‘\0201030310.\022\001\023’ are the same file
mv: cannot move ‘\0201030311.\n\020\003’ to a subdirectory of itself, ‘\0201030311. \020\003’
mv: ‘\0201030311.\022\001\023’ and ‘\0201030311.\022\001\023’ are the same file
mv: cannot move ‘foto_jpg’ to a subdirectory of itself, ‘foto_jpg/foto_jpg’
mv: ‘New.txt’ and ‘New.txt’ are the same file
|
Ich möchte die Dateien mit Fragezeichen entfernen. MfG, mcomm
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ganz offensichtlich wird die Karte mit dem falschen Zeichensatz (für die Dateinamen) gemountet. Von daher sind das keine echten "?", sondern Hinweise auf nicht definierte Zeichen in den Dateinamen. (typischerweise unter einem Win...-Zeichensatz geschrieben, und dann als utf-8 gelesen ...) Dafür gibt es aber geeignete Parameter in mount -o remount , um das zu berücksichtigen. Wenn die Dateinamen bereits vermurkst sind, wäre es womöglich ein Fall für convmv ? LG, track
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Ist es nicht so, dass Windows Dateien, die gelöscht sind, mit einem führenden Fragezeichen versieht? Bzw. das VFAT-Dateisystem das so handhabt?
|
microft
Anmeldungsdatum: 6. August 2009
Beiträge: 454
Wohnort: Norddeutschland
|
Mach das ding mal im Nautilus auf. Der wird zwar heftig maulen, gibt dir aber die Möglichkeit den Namen zu ändern. cu
|
mcommon
(Themenstarter)
Anmeldungsdatum: 3. Februar 2014
Beiträge: 76
Wohnort: Mönchengladbach
|
Hallo! @Track - aus man-Page von mount habe ich verstanden, dass ich muss wissen, mit welchem charset gemountet werden soll. Wie kann ich nachspüren, welchen Parameter soll ich dem iocharset übergeben? user unknown schrieb: Ist es nicht so, dass Windows Dateien, die gelöscht sind, mit einem führenden Fragezeichen versieht? Bzw. das VFAT-Dateisystem das so handhabt?
- kann sein, dass es die gelöschte Dateien sind. Aber ich neige zur Meinung von @Track, dass es keine _echte_ Fragezeichen sind. microft schrieb: Mach das ding mal im Nautilus auf. Der wird zwar heftig maulen, gibt dir aber die Möglichkeit den Namen zu ändern. cu
- ich habe kein Nautilus. Dafür habe ich mit PCManFM aus meiner Installation von Lubuntu 14.04 probiert. Aber da ist anderes Problem, dass er mountet diesen Chip nur ro.
| /dev/sdh1 on /media/user/64A5-F009 type vfat (ro,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
|
MfG, mcommon PS: convmv hat nicht funktioniert.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Du kannst ja gucken, welche Zeichen sich da tatsächlich drin verstecken, z.B. mit ls und hexdump oder direkt mit ls -b : track@lucid:~$ ls -1 ./-test/*ö*
./-test/ich bin?böse
./-test/wort_mit_?h=öh.
track@lucid:~$ ls -1 ./-test/*ö* | hd
00000000 2e 2f 2d 74 65 73 74 2f 69 63 68 20 62 69 6e 0a |./-test/ich bin.|
00000010 62 c3 b6 73 65 0a 2e 2f 2d 74 65 73 74 2f 77 6f |b..se../-test/wo|
00000020 72 74 5f 6d 69 74 5f f6 68 3d c3 b6 68 2e 0a |rt_mit_.h=..h..|
track@lucid:~$ ls -b1 ./-test/*ö*
./-test/ich\ bin\nböse
./-test/wort_mit_\366h=öh. (in meinem Fall ein "\n" und ein Win..1250- "ö" ) LG, track
|
mcommon
(Themenstarter)
Anmeldungsdatum: 3. Februar 2014
Beiträge: 76
Wohnort: Mönchengladbach
|
Hallo!
Sorry, für späteren Kommentar. Ich weiß nicht, welche Zeichenkodierung es sein soll:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | $ ls -1
**
?1030303.???
?1030308.???
?1030308.???
?1030309.???
?1030309.???
?1030310.???
?1030310.???
?1030311.???
?1030311.???
foto_jpg
New.txt
$ ls -1 | hd
00000000 2a 2a 0a 10 31 30 33 30 33 30 33 2e 12 01 13 0a |**..1030303.....|
00000010 10 31 30 33 30 33 30 38 2e 0a 10 03 0a 10 31 30 |.1030308......10|
00000020 33 30 33 30 38 2e 12 01 13 0a 10 31 30 33 30 33 |30308......10303|
00000030 30 39 2e 0a 10 03 0a 10 31 30 33 30 33 30 39 2e |09......1030309.|
00000040 12 01 13 0a 10 31 30 33 30 33 31 30 2e 0a 10 03 |.....1030310....|
00000050 0a 10 31 30 33 30 33 31 30 2e 12 01 13 0a 10 31 |..1030310......1|
00000060 30 33 30 33 31 31 2e 0a 10 03 0a 10 31 30 33 30 |030311......1030|
00000070 33 31 31 2e 12 01 13 0a 66 6f 74 6f 5f 6a 70 67 |311.....foto_jpg|
00000080 0a 4e 65 77 2e 74 78 74 0a |.New.txt.|
00000089
$ ls -b1
**
\0201030303.\022\001\023
\0201030308.\n\020\003
\0201030308.\022\001\023
\0201030309.\n\020\003
\0201030309.\022\001\023
\0201030310.\n\020\003
\0201030310.\022\001\023
\0201030311.\n\020\003
\0201030311.\022\001\023
foto_jpg
New.txt
|
Vielleicht sind die Dateinamen korrupt? Danke! MfG, mcommon
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Aha, immerhin bringt Dein Listing jetzt mal Klarheit, was da schlummert: 00000000 2a 2a 0a 10 31 30 33 30 33 30 33 2e 12 01 13 0a |**..1030303.....| Dies gehört tatsächlich zu keiner besonderen Codierung, sondern es sind Ascii-Steuerzeichen, die dort normalerweise nicht auftauchen (... sollten), sondern traditionell bei der Drucker- und Schnittstellensteuerung üblich sind. (allerdings sind sie unter *nix durchaus zulässige Zeichen, auch im Dateinamen ! - von daher also kein Problem.) Bei Dir sind es [DLE]...[DC2][SOH][DC3] - - allerdings habe ich keine Ahnung, wie die dorthin gekommen sein könnten. Wie gesagt, sowas habe ich sonst nur im Datendump von Schnittstellen gesehen. Umwandeln kannst Du sie ganz normal über HEX- Codes. Die funktionieren sowohl unter der Shell als auch bei sed, Perl und Konsorten: track@lucid:~$ echo -e '\x10101030303.\x12\x01\x13'
�101030303.���
track@lucid:~$ echo -e '\x10101030303.\x12\x01\x13' | sed 's/\x10/[DLE]/g; s/\x01/[SOH]/g; s/\x12/[DC2]/g; s/\x13/[DC3]/g; '
[DLE]101030303.[DC2][SOH][DC3] LG, track
|
mcommon
(Themenstarter)
Anmeldungsdatum: 3. Februar 2014
Beiträge: 76
Wohnort: Mönchengladbach
|
@track!
Und wie kann ich die Dateien umbennen, damit ich file ausführen kann (und danach mein Bildbetrachter)?
MfG, mcommon
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Grundsätzlich kannst Du auch Dateinamen mit Sonderzeichen an file verfüttern, z.B.: file $'\x10'1030303* Dafür brauchst Du nichts umzubenennen. Wenn Du dann doch umbenennen willst, wäre das einfachste wahrscheinlich Perl- rename: rename -n 's/\x10/x/; s/\x12\x01\x13/jpg' $'\x10'* Wie gesagt, Perl und Konsorten verstehen die HEX- Schreibweise ja auch. LG, track
|
mcommon
(Themenstarter)
Anmeldungsdatum: 3. Februar 2014
Beiträge: 76
Wohnort: Mönchengladbach
|
File berichtet, dass es data ist. in Bezug auf rename habe ich Deine Befehlszeile ein bisschen abgeändert, von:
| rename -n 's/\x10/x/; s/\x12\x01\x13/jpg' $'\x10'*
|
in:
| rename -n 's/\x10/x/; s/\x12\x01\x13/jpg/' $'\x10'*
|
weil ansonsten meldete rename, dass
| Substitution replacement not terminated at (eval 1) line 1
|
Aber jetzt, in Test-Lauf (dank '-n' Option), meldet rename:
| 1030308. renamed as x1030308.jpg
Unsuccessful stat on filename containing newline at /usr/bin/rename line 59.
1030309.
renamed as x1030309.
|
Wie könnte ich noch diese Hürde schaffen?
MfG, mcommon
|