iCloud Drive unter MacOS - Dateien ohne Erweiterungen lassen sich nicht öffnen

350
dvanhook

Versuchen, meinem Schwiegervater mit einem seltsamen zu helfen: Plötzlich öffnet sich ein großer Prozentsatz (vielleicht 20%) seiner iCloud Drive-Dokumente auf seinem ganz neuen MacBook Pro nicht. Ich habe es mir angesehen und die problematischen Dateien scheinen Dateien zu sein, die keine Dateierweiterung haben. Sie werden als ausführbare Unix-Dateien und nicht als .doc-Dateien angezeigt.

Wenn ich die .doc als Dateierweiterung hinzufüge, wird die Datei sofort heruntergeladen und ordnungsgemäß geöffnet.

Hat das schon mal jemand gesehen? Gibt es eine andere Lösung, als Hunderte von Dateien manuell umbenennen zu müssen?

0

1 Antwort auf die Frage

0
jimtut

Unter Mac OS 9 und früheren Versionen war die einzige Möglichkeit für einen Mac zu ermitteln, welche Art von Datei Sie hatten, über die Codes "Type" und "Creator". Mit OS X wurde auf Erweiterungen umgestellt, aber diese Codes waren immer noch vorhanden (die Einstellungen könnten am Anfang außer Kraft gesetzt werden, aber jetzt denke ich, dass sie eine Art "Backup" sind, um Dateien zu identifizieren).

Ich habe gerade eine DOC-Datei (mit der Erweiterung .doc) genommen, sie in "Foo" (keine Erweiterung) umbenannt, und der Finder hat sie erkannt. Mit dem xattrBefehl konnte ich sehen, dass die Codes der Originaldatei in die neue Datei kopiert wurden, sodass der Finder auf meinem ersten Mac geöffnet werden konnte.

Finder auf einem anderen Mac (durch iCloud synchronisiert) und der "Foo" -Datei ist eine UNIX-Datei. Daher synchronisiert iCloud NICHT die erweiterten Attribute aus der Quelle. Ohne eine Erweiterung müssen Sie die Codes auf der Zielseite erneut anwenden oder einfach die Erweiterung hinzufügen.

Mit etwas Glück haben Sie Word-, Excel- usw.-Dateien in separaten Ordnern aufbewahrt und können sie im Stapel umbenennen (siehe unten). Wenn dies nicht der Fall ist, können Sie den fileBefehl für jede Datei ausführen, um zu sehen, was es ist, und dann umbenennen.

Um Dateien umzubenennen, denke ich, gibt es unzählige Tools, die Sie verwenden können, oder Sie können dieses Perl-Skript verwenden. Ich habe es vor Jahren geschrieben, und es ist lahm, aber es funktioniert für alles, was ich darauf geworfen habe.

#!/usr/bin/perl  use strict; use File::Copy;  if (scalar(@ARGV) < 2) { print "\nUSAGE: $0 <extension> <file(s)>\n\n"; exit 1; }  my $ext = shift; # Strip off leading period, since we'll add it later. $ext =~ s/^\.//;  # Everytime I pass this script's @ARGV back out to a system call # the whole argument arrary gets treated like a long string. # If any individual $ARGV had spaces in it, that $ARGV ends up # looking like multiple args to the system call. # So, parse each $ARGV one at a time, in double-quotes. foreach my $arg (@ARGV) { if ($arg =~ m/\./) { # This $arg already has an extension! if ($arg =~ m/\.$ext$/) { # This $arg already has this $ext. Skip it. warn "WARNING! $arg already has that extension.\n"; next; } else { # This $arg has an extension, but it's not the same as $ext. warn "WARNING! $arg already had an extension.\n"; } } renameFile("\$", ".$ext", $arg); }  sub renameFile { my $searchString = shift; my $replacementString = shift; my $file = shift;  if (-e "$file") { my $newName = $file; if ($newName =~ s/$searchString/$replacementString/ge) { if (-e "$newName") { print "ERROR! Unable to move '$file' to '$newName' because\n"; print " a file named '$newName' already exists!\n"; } else { print "Moving '$file' to '$newName'.\n"; move("$file", "$newName") || die "Unable to rename '$file'.\nStopped"; } } } else { print "File '$file' does not exist.\n"; } } 
Wow, das ist großartig - großartige Detektivarbeit. Danke auch für das Skript. Mein Schwiegervater rief den Apple-Support an, und wie sich herausstellte, luden sie alles erneut herunter und die Daten waren bei den meisten Dateien von iCloud wieder verfügbar. Ich weiß nicht, warum es anfangs nicht da war, aber das ist eine Frage für Tim C, denke ich. Dies als vollständige Antwort zu markieren, da dieses Skript süß ist. dvanhook vor 6 Jahren 0