ubuntuusers.de

Dateien mit "?"-Zeichen entfernen oder umbenennen

Status: Ungelöst | Ubuntu-Version: Lubuntu 13.10 (Saucy Salamander)
Antworten |

mcommon

Avatar von 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:

1
2
3
4
5
6
7
8
9
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

Avatar von 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

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

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

Avatar von 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)
Avatar von mcommon

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.

1
/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

Avatar von 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)
Avatar von mcommon

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

Avatar von 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)
Avatar von mcommon

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

Avatar von 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)
Avatar von mcommon

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:

1
rename -n  's/\x10/x/; s/\x12\x01\x13/jpg'  $'\x10'*

in:

1
rename -n  's/\x10/x/; s/\x12\x01\x13/jpg/'  $'\x10'*

weil ansonsten meldete rename, dass

1
Substitution replacement not terminated at (eval 1) line 1

Aber jetzt, in Test-Lauf (dank '-n' Option), meldet rename:

1
2
3
4
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

Antworten |