iCloud Drive auf MacOS – Dateien ohne Erweiterung öffnen sich nicht

iCloud Drive auf MacOS – Dateien ohne Erweiterung öffnen sich nicht

Ich versuche, meinem Schwiegervater bei einem seltsamen Problem zu helfen: Auf einmal lässt sich ein großer Prozentsatz (vielleicht 20 %) seiner iCloud Drive-Dokumente auf seinem brandneuen MacBook Pro nicht öffnen. Ich habe es mir angesehen und die problematischen Dateien scheinen Dateien ohne Dateierweiterung zu sein. Sie werden als „Unix-ausführbare“ Dateien und nicht als .doc-Dateien angezeigt.

Wenn ich „.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 einzeln manuell umbenennen zu müssen?

Antwort1

Unter Mac OS 9 und früheren Versionen konnte ein Mac nur anhand der Dateityp- und Erstellercodes erkennen, um welchen Dateityp es sich handelte. Unter OS X wurde auf Erweiterungen umgestellt, aber diese Codes waren immer noch da (konnten die Einstellungen am Anfang möglicherweise überschreiben, aber jetzt denke ich, dass sie eine „Backup“-Methode zur Identifizierung von Dateien sind).

Ich habe einfach eine DOC-Datei (mit der Erweiterung .doc) genommen, sie in „Foo“ (ohne Erweiterung) umbenannt und der Finder hat sie erkannt. Mit dem xattrBefehl konnte ich sehen, dass die Codes aus der Originaldatei in die neue Datei kopiert wurden, sodass der Finder auf meinem ersten Mac sie öffnen konnte.

Ich überprüfe den Finder auf einem anderen Mac (synchronisiert über iCloud) und die Datei „Foo“ ist eine UNIX-Datei. iCloud synchronisiert also NICHT die erweiterten Attribute von der Quelle. Ohne eine Erweiterung müssten 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 gespeichert und können sie im Stapel umbenennen (siehe unten). Andernfalls können Sie den fileBefehl für jede Datei ausführen, um zu sehen, was es ist, und sie dann manuell umbenennen.

Um Dateien stapelweise umzubenennen, gibt es meiner Meinung nach unzählige Tools dafür, oder Sie können dieses Perl-Skript dafür verwenden. Ich habe es vor Jahren geschrieben und es ist lahm, aber es funktioniert bei allem, was ich damit gemacht 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";
  }
}

verwandte Informationen