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 xattr
Befehl 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 file
Befehl 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"; } }