Etwas wie
shotwell *.cr2 ./
Das funktioniert nicht, aber im Grunde möchte ich shotwell verwenden, um alle Dateien zu öffnen, die mit .cr2
und im aktuellen Verzeichnis enden (einschließlich Unterordnern).
Der Kontext ist, dass mir Fotos fehlen, die ich mit meiner Kamera aufgenommen habe und die ich inzwischen von meiner Speicherkarte gelöscht habe.
Es gibt Thumbnails für sie in Shotwells "fehlenden Bildern", aber ich kann sie nicht finden. Also dachte ich, ich würde rennen photorec
, um sie zu finden. Infolgedessen gab mir photorec eine Bootsladung Ordner und Dateien, die meine Festplatte füllten. Anstatt alle Dateien einzeln zu durchsuchen, habe ich mich entschlossen, auf meiner Festplatte nach .cr2-Dateien zu suchen und dabei einen bestimmten Ordner zu vermeiden Photogs
, von dem ich weiß, dass er sie nicht enthält, da diese nicht Teil des photorec
Datendumps waren.
quelle
Antworten:
Normalerweise möchten Sie Shotwell einfach öffnen und in den Ordner ziehen.
Bei Bedarf können Sie die Shell eine Liste von CR2-Dateien erstellen lassen und Shotwell anweisen, nur diese Dateien zu öffnen. Gelegentlich ist dies möglicherweise das, was Sie möchten, aber in diesem Fall hat dies aufgrund von Shotwells Verhalten - unter anderen Umständen eine Funktion - nicht automatisch das getan, was Sie brauchten , um automatisch andere Bilddateien (aller Art) anzuzeigen, die sich in der befinden dieselben Ordner wie die Bilder, die Sie geöffnet haben.
Um sicherzustellen, dass Shotwell nur über die Bilder Bescheid weiß, an denen Sie interessiert sind, können Sie den Verzeichnisbaum an eine andere Stelle klonen
.cr2
und nur Dateien und die Ordner kopieren , die sie enthalten, aber sonst nichts. Dies kann jedoch erheblichen zusätzlichen Platz beanspruchen. Ein anderer Ansatz besteht darin, eine Hierarchie symbolischer Links zu erstellen. Statt eines neuen Verzeichnisbaums mit Kopien Ihrer Originaldateien.cr2
haben Sie einen neuen Verzeichnisbaum mit Syminks zu diesen. Dies nimmt viel weniger Platz ein.Diese Antwort deckt alle diese Ansätze ab.
Öffnen eines Ordner mit Bildern (einschließlich Unterordnern) in Shotwell
Shotwell selbst bietet Ihnen zwei Möglichkeiten, um einen ganzen Verzeichnisbaum von Fotos zu öffnen. Wenn diese für Sie funktionieren, müssen Sie in der Befehlszeile nichts Kluges tun oder sie überhaupt verwenden. Wenn nicht, können Sie dies in Verbindung mit einer anderen Technik tun. (Wenn Sie beispielsweise ein neues Verzeichnis mit Symlinks oder Kopien Ihrer
.cr2
Dateien erstellen, können Sie es auf eine dieser Arten öffnen.)Weg 1: Öffnen Sie einfach den gesamten Ordner in Shotwell.
Klicken Sie in Shotwell im Menü Datei auf Aus Ordner importieren . Wählen Sie dann den Ordner aus, aus dem Sie Bilder importieren möchten. Dies ist nicht auf
.cr2
Dateien beschränkt. Wenn Sie jedoch Dateien aus mehreren Unterordnern öffnen, die.cr2
Bilder enthalten , die mit einer Digitalkamera erstellt wurden, sind dies höchstwahrscheinlich die einzigen vorhandenen Dateien.Weitere Informationen finden Sie in Jakobs Antwort auf Alle Bilder rekursiv anzeigen (einschließlich aller Unterordner) .
Weg 2: Ziehen Sie den Ordner in Shotwell.
In den meisten Desktop-Umgebungen und Dateibrowsern können Sie Shotwell auch öffnen und den Ordner mit Ihren Bildern in das Shotwell-Fenster ziehen. Wie beim Importieren aus dem Ordner empfiehlt Shotwell, Fotos zu öffnen.
Wenn Sie aus einem Dateibrowserfenster oder Ihrem Desktop in Shotwell ziehen, können Sie in eine bestimmte Bibliothek ziehen. Oder wenn Sie nicht mehrere Bibliotheken eingerichtet haben, können Sie einfach überall hin ziehen und es funktioniert. (Sie müssen nicht einmal in den linken Bereich ziehen.)
Diese Methode ist sehr praktisch und genauso leistungsfähig wie die manuelle Auswahl des Ordners (mit Datei > Aus Ordner importieren , wie oben beschrieben). Wenn Sie Dateien oder Ordner mit einer dieser Methoden öffnen, bietet Shotwell Ihnen die Möglichkeit, die Fotos zu öffnen, ohne sie in die Bibliothek zu kopieren.
Klicken Sie zum Importieren ohne Kopieren auf An Ort und Stelle importieren anstelle von Fotos kopieren .
Starten von Shotwell mit einer Liste von Bilddateinamen
Wenn Sie dies aus irgendeinem Grund tun möchten oder müssen, indem Sie einen Befehl im Terminal ausführen, können Sie den
shotwell
Befehl ausführen und den Dateinamen jedes Bildes als Argument an ihn übergeben. Globstar macht es einfach:Dadurch werden die
.cr2
Dateien geöffnet, die sich an einer beliebigen Stelle im aktuellen Verzeichnis befinden. Es unterscheidet sich vom Ausführen von Shotwell und dem anschließenden Ziehen des Ordners darin, dass Shotwell nur versucht, die Dateien zu importieren, deren Namen Sie ihm geben. Da Shotwell jedoch häufig andere Bilddateien aus denselben Ordnern anzeigt wie die Dateien, die Sie öffnen sollen, ist dies möglicherweise nicht für Ihre Anforderungen geeignet. ( Weitere Informationen, die Sie zu Ihrem Problem gegeben haben, deuten darauf hin, dass dies nicht der Fall ist . Eine Alternative finden Sie weiter unten.)Dies schließt keine Dateien oder Unterordner ein, deren Namen mit beginnen
.
. Wenn Sie jedoch CR2-Dateien haben, deren Namen mit einem Punkt beginnen, möchten Sie sie die meiste Zeit wahrscheinlich sowieso nicht in Shotwell öffnen. Sofern Sie Ihre Dateien oder Ordner nicht absichtlich auf diese Weise benannt haben, ist eine Punktdatei mit einer Dateinamenerweiterung für Bilder oder Dokumente eher eine Metadatendatei als ein tatsächliches Bild oder Dokument. Beispielsweise fügt macOS beim Zugriff auf externe Medien (einschließlich Flash-Laufwerke und Digitalkameras) häufig solche Dateien hinzu (z. B.._kittens.cr2
für ein tatsächliches Bildkittens.cr2
).Wenn Sie auch Dateien suchen
.
.
möchten , deren Namen mit beginnen oder die sich in Ordnern befinden, deren Namen mit beginnen , aktivieren Sie auch dotglob. Sie können dies mitshopt -s dotglob
oder durch Übergeben von beidenglobstar
unddotglob
an dasshopt
eingebaute tun:Bei Globs wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. Aber möchten Sie vielleicht Dateinamen zwischen Groß- und unsensibel entsprechen , um offene Dateien mit der Endung
.cr2
,.Cr2
,.cR2
, und.CR2
. Um das zu tun, entweder:Aktivieren nocaseglob , indem Sie
shopt -s
mitnocaseglob
, entweder allein oder mit anderen Shell - Optionen. Zum Beispiel, umshotwell
alle.cr2
Dateien.
auszuführen, ohne.
Berücksichtigung der Groß- und Kleinschreibung zu suchen und -Dateien und Dateien in -Verzeichnissen einzuschließen:Oder verwenden Sie
.[cC][rR]2
statt.cr2
in Ihrem Glob-Muster. Dies bewirkt beispielsweise dasselbe wie oben:Beachten Sie, dass die Groß- und Kleinschreibung völlig unabhängig davon ist, ob
.
Dateien und Ordner übereinstimmen oder nicht . Sie könnendotglob
aus den obigen Beispielen entfernen, und es kann immer noch die Groß- und Kleinschreibung nicht berücksichtigt werden.Um ein Verzeichnis anzugeben, anstatt nur das aktuelle Verzeichnis zu verwenden, setzen Sie seinen Namen und ein
/
vor den**/*.cr2
Glob. Wenn Sie beispielsweise denshotwell
obigen Befehl durch diesen ersetzen, werden alle.cr2
Dateien imPictures
Unterverzeichnis Ihres Home-Verzeichnisses geöffnet :Anders als beim ersten Befehl, der Ihr aktuelles Verzeichnis verwendet, werden Sie Shotwell unabhängig davon, wo Sie diesen Befehl ausführen, anweisen, dieselben Dateien zu öffnen.
Testen
Wenn Sie das Terminal wirklich dafür verwenden müssen, dann schätze ich, dass es Teil von etwas Komplexerem sein kann. Wenn Sie möchten, können Sie solche Befehle testen , bevor sie tatsächlich ausgeführt wird durch den Ersatz
shotwell
mitprintf '%s\n'
. Anstatt die Dateinamen an Shotwell zu übergeben, werden sie pro Zeile aufgelistet. Zum Beispiel auf meinem Computer:Globstar und andere Shell-Optionen deaktivieren
Die Globstar-Shell-Option ist aktiviert, wie es der
shopt -s globstar
Befehl (oben) getan hat. Wenn es bereits aktiviert ist, benötigen Sie nicht mehrere Befehle. Und Sie müssen globstar nur einmal pro Shell-Instanz festlegen.Sie können globstar wieder ausschalten, indem Sie Folgendes ausführen:
Und Sie können überprüfen, ob globstar ein- oder ausgeschaltet ist, indem Sie Folgendes ausführen:
Wenn Sie globstar in einem Skript verwenden, sollten Sie in Betracht ziehen, es wieder zu deaktivieren, wenn möglicherweise Code in demselben Skript enthalten ist, das nicht für globstar geschrieben wurde. Zum Beispiel ist das Schreiben,
**
wenn Sie meinen,*
normalerweise kein Problem, wenn globstar deaktiviert ist. Bei aktiviertem globstar kann es jedoch zu ernsthaften Problemen kommen, wenn ein Befehl weit mehr Dateien betrifft, als beabsichtigt.Wenn Sie Dotglob oder Nocaseglob verwendet haben und diese ebenfalls deaktivieren möchten, können Sie dies auch mit
shopt -u dotglob
bzw. tunshopt -u nocaseglob
. Sie können auch mehrere Shell-Optionen übergeben,shopt -u
um sie gleichzeitig zu deaktivieren. Zum Beispiel zum Ausschaltenglobstar,
dotglob
undnocaseglob
:Im Vergleich zu Globstar gibt es weniger schwerwiegende Fehler, die Sie möglicherweise machen, weil Sie vergessen haben, dass Sie Dotglob oder Nocaseglob aktiviert haben. Andere Personen (einschließlich Personen, die Sie auf Websites wie Ask Ubuntu konsultieren) gehen jedoch normalerweise davon aus, dass dotglob und nocaseglob deaktiviert sind, wenn sie Befehle zur Verwendung vorschlagen, sofern Sie ihnen nichts anderes mitteilen.
Weitere Informationen zu diesen Glob-bezogenen Shell-Optionen (und auch zu Globs im Allgemeinen ) finden Sie im Bash-Referenzhandbuch . Sie werden alle hauptsächlich in 4.3.2 The Shopt Builtin behandelt . Für globstar siehe auch 3.5.8.1 Pattern Matching . Für Dotglob siehe auch 3.5.8 Dateinamenerweiterung .
Erstellen eines neuen Verzeichnisbaums
Da Sie in Ihrem Fall Shotwell wirklich brauchen, um nur
.cr2
Dateien anzuzeigen, haben Sie Nicht-.cr2
Dateien in denselben Ordnern mit.cr2
Dateien, und das Durchsuchen von Bildern in Shotwell bietet diese Dateien automatisch auch an . Es sieht so aus, als müssten Sie einen Ordner haben, der enthält keine anderen Bilddateien als die.cr2
Dateien, die Sie öffnen möchten.Die Dateien bewegen, wie Sie vorgeschlagen haben , ist ein Ansatz, aber ich empfehle stattdessen entweder das Kopieren der Dateien oder besser machen symbolische Links zu den Dateien (siehe auch FOLDOC ), denn:
Sie müssen noch eine weitere Entscheidung treffen. Erstellen Sie alle neuen Einträge (ob Kopien oder Symlinks) im selben Verzeichnis, wodurch die Dateihierarchie verringert wird? Oder erstellen Sie am Ziel Verzeichnisse, die jedem der Verzeichnisse an der Quelle entsprechen und mindestens eine
.cr2
Datei enthalten?Durch Reduzieren der Dateihierarchie können Sie alle Dateien gleichzeitig auf einfache Weise anzeigen. Insbesondere ist es einfach, die Namen und Größen der Dateien auf einmal anzuzeigen und eine beliebige Kombination der Dateien in einem grafischen Dateibrowser auszuwählen.
Es gehen jedoch auch Informationen darüber verloren, in welchen Ordnern sie sich befanden, was möglicherweise hilfreich ist (obwohl Sie zum ursprünglichen Ordner zurückkehren und dort nach ihnen suchen können, wenn Sie die Dateien nicht verschieben).
Das größere Problem beim Reduzieren der Dateihierarchie ist jedoch, was passiert, wenn Sie zwei oder mehr Dateien mit demselben Namen an verschiedenen Stellen haben . Wenn Sie die Dateihierarchie reduzieren, werden je nach Vorgehensweise entweder alle bis auf die erste nicht kopiert (oder verknüpft) und Sie erhalten einen Fehler oder eine Warnung, oder alle bis auf die letzte Kopie (oder den letzten Link) werden überschrieben .
Dies ist ein weiterer Grund, warum ich empfehle, Symlinks zu kopieren oder zu erstellen, anstatt Dateien zu verschieben. Wenn Sie mehrere Dateien "erfolgreich" in dieselbe Datei verschieben, haben Sie alle bis auf die letzte verloren!
Aufgrund der Nachteile, alles in ein einziges Verzeichnis ohne Unterverzeichnisse zu reduzieren, erstellen die hier verwendeten Ansätze einen neuen Verzeichnisbaum am Ziel.
Weg 1: Kopieren
Ich zeige dies zuerst, weil es etwas einfacher ist, aber ich schlage vor, dass Sie stattdessen symbolische Links erstellen ("Weg 2"), insbesondere wenn das Ziellaufwerk möglicherweise nicht genügend Speicherplatz für alle Dateien hat. "Weg 2", der etwas komplizierter ist, ist viel detaillierter, da es anscheinend weniger Ressourcen für die Verwendung dieser Technik gibt. Ich gehe davon aus, dass die meisten Menschen in dieser Situation dies bevorzugen und Informationen, die für beide Methoden gelten - Grundlegende Ratschläge zum Entkommen von Räumen in Pfaden - werden dort und nicht hier gegeben.
Wenn Sie einen Verzeichnisbaum kopieren und den Kopiervorgang anpassen müssen, sollten Sie normalerweise
rsync
anstelle von verwendencp
. Dies ist einer dieser Fälle.Durch Ersetzen
src
durch den Pfad zum Verzeichnis der obersten Ebene, das alle Ihre CR2-Dateien enthält, und Ersetzendest
durch den Namen des Verzeichnisses, das Sie erstellen möchten und das eine Hierarchie symbolischer Links zu den CR2-Dateien enthält, führen Sie Folgendes aus:Vergessen Sie nicht
/
den Nachnamen des Quellverzeichnisses, es sei denn, Sie möchten, dass ein zusätzliches Verzeichnis der obersten Ebene darin erstellt wirddest
. Das heißt, wenn Sie das Trailing weglassen/
,rsync
wird das Zielverzeichnis für Sie im Inneren erstelltdest
. Angenommen, essrc
handelt sich um einen relativen Pfad, der no enthält/
. Dann:src/
in Ihremrsync
Befehl erhalten Sie einen Symlinkdest/foo/bar.cr2
für die Dateisrc/foo/bar.cr2
.src
in Ihremrsync
Befehl erhalten Sie einen Symlink für die Datei .dest/src/foo/bar.cr2
src/foo/bar.cr2
Da es für das Verzeichnis der obersten Ebene, in dem Symlinks platziert werden, verwirrend sein kann, denselben Namen wie das Verzeichnis der obersten Ebene zu haben, das die
.cr2
Dateien enthält, auf die die Symlinks verweisen, empfehle ich, das/
am Ende des Ziels anzugeben Verzeichnisname in Ihremrsync
Befehl. (Geben Sie für das Quellverzeichnis ein Verzeichnis an, das leer ist, nicht existiert oder anderweitig für diesen Zweck vorgesehen ist. Andernfalls werden Sie einen anderen Ordner überladen.)Wie ist in der Regel der Fall , wenn Sie den Namen einer Datei oder ein Verzeichnis zu einem Kommandozeilen - Programm oder Skript übergeben, speziell behandelt , wenn Ihre Ziel- oder Quellverzeichnispfade enthalten keine Leerzeichen (oder Zeichen , die von der Schale, wie
\
,$
,'
und verschiedenen andere Interpunktion), dann müssen Sie sie zitieren . Ich habe ausführlich beschrieben, wie dies für den häufigsten Fall von Leerzeichen in "Weg 2" getan wird - der Ratschlag zum Zitieren in diesem Abschnitt gilt auch hier. Wenn Sie sich jedoch nicht sicher sind, wie Sie den Namen eines Ordners angeben sollen, können Sie Ubuntu dies für Sie tun lassen, indem Sie den Ordner einfach in das Temrminal ziehen. Der vollständige Pfad wird mit korrektem Anführungszeichen eingefügt .Nachdem Sie nur die
.cr2
Dateien und die Ordner kopiert haben , die sie enthalten, können Sie den Zielordner in Shotwell öffnen. (Siehe "Öffnen eines Ordners mit Bildern (einschließlich Unterordnern) in Shotwell" oben.) Bevor Sie jedoch ausführenrsync
, sollten Sie entscheiden, ob Sie Einträge überspringen möchten, die mit beginnen,.
und ob Sie Einträge mit Suffixen für Groß- und Kleinschreibung einschließen möchten. In diesem Fall müssen Sie einen etwas anderenrsync
Befehl ausführen .Anpassen der Handhabung von gepunkteten Einträgen und der Groß- und Kleinschreibung
Möglicherweise möchten Sie einen anderen
rsync
Befehl verwenden, um zu ändern, ob Dateien und Verzeichnisse, die mit einem Punkt beginnen, übersprungen werden und ob bei der Übereinstimmung mit dem Suffix die Groß- und Kleinschreibung berücksichtigt werden soll.cr2
.Der obige Befehl enthält Verzeichnisse und Dateien, deren Namen mit beginnen
.
. Um solche Dateien und Verzeichnisse auszuschließen, stellen Sie sie--exclude='.*/' --exclude='.*'
vor alle anderen--include
s und--exclude
s. Verwenden Siersync
stattdessen diesen Befehl (mit den entsprechenden Ersetzungen fürsrc
unddest
natürlich):Die
rsync
Befehle bisher gezeigt haben , case-sensitive gewesen und nicht das Kopieren von Dateien , dass Ende in.CR2
,.Cr2
oder.cR2
nicht.cr2
. Wenn Sie möchten, dass solche Dateien kopiert werden, müssen Sie dies berücksichtigen, indem Sie das--include
Muster*.[cC][rR]2
anstelle von verwenden*.cr2
.Dieser dritte Befehl ist Groß- und Kleinschreibung und (wie der erste Befehl) nicht nicht überspringt Dateien und Verzeichnisse , deren Namen beginnen mit
.
:Wenn Sie Dateien kopieren
rsync
und sich nicht sicher sind, welchen dieser Befehle Sie möchten, empfehle ich die Verwendung dieses Befehls, wenn Sie sicherstellen möchten, dass Sie nichts verpassen. Beachten Sie jedoch, dass Punktedateien möglicherweise Metadaten enthalten und Punktedateien, die als Bilder bezeichnet werden, möglicherweise nicht wirklich Bilder sind. Siehe die Diskussionen zu Punktedateien im Abschnitt "Starten von Shotwell mit einer Liste von Bilddateinamen" oben und zu Punktedateien und Groß- und Kleinschreibung in "Weg 2" weiter unten.Dieser vierte Befehl ist Groß- und Kleinschreibung und (wie der zweite Befehl) hat zum Überspringen von Dateien und Verzeichnisse , deren Namen beginnen mit
.
:Weg 2: Symbolische Verknüpfungen erstellen
Ich empfehle Ihnen, dies zu tun, obwohl Weg 1 in Ordnung ist, wenn Sie genügend Speicherplatz auf dem Ziellaufwerk haben. Sie müssen Way 1 nicht lesen, um dies zu verwenden.
Die hier vorgestellte Methode erstellt eine Liste von
.cr2
Dateien und durchläuft die Liste, erstellt nach Bedarf Zielverzeichnisse und füllt sie mit symbolischen Links zu jeder.cr2
Datei.Dies ist gerade so kompliziert, dass ich vorschlage, es in ein Skript einzufügen, anstatt es nur interaktiv einzugeben. Sie können das Skript beliebig platzieren, aber der Einfachheit halber zeige ich Ihnen, wie Sie es mit dem Skript tun, das sich direkt in Ihrem Home-Ordner befindet.
Schreiben Sie das Skript (oder fügen Sie es ein).
Erstellen Sie eine Textdatei
make-symlinks
in Ihrem Home-Ordner. Es ist keine Dateierweiterung erforderlich.Sie können dies mit jedem Texteditor wie Vim, Nano, Gedit oder Leafpad tun. Verwenden Sie jedoch kein Textverarbeitungsprogramm wie LibreOffice Writer. (Sie können dies sogar tun, indem Sie ausführen
cat > ~/make-symlinks
, den Inhalt der Datei einfügen und Ctrl+ Din einer neuen Zeile drücken , wenn Sie möchten.)Wenn Sie dem Skript einen anderen Namen als geben
make-symlinks
, stellen Sie sicher, dass Sie diesen Namen verwenden, wenn Sie Befehle ausführen, die das Skript später verwenden.Fügen Sie das in die Datei ein und speichern Sie die Datei. Dieses Skript verwendet globstar, eine Bash-Funktion, die oben unter "Starten von Shotwell mit einer Liste von Bilddateinamen" erläutert wurde .
Sie können den Umgang mit gepunkteten Einträgen und die Groß- und Kleinschreibung ändern.
Abhängig von Ihren Anforderungen möchten Sie möglicherweise einige Änderungen vornehmen:
Wenn Sie keine
.cr2
Dateien einschließen möchten, deren Namen mit beginnen.
oder die sich in Verzeichnissen befinden, deren Namen mit beginnen.
, entfernen Sie siedotglob
aus dershopt
Zeile.Dateien und Verzeichnisse, deren Name mit beginnt,
.
werden häufig für Metadaten verwendet (siehe Abschnitt "Starten von Shotwell mit einer Liste von Bilddateinamen" oben). Auf der anderen Seite sollten Sie behalten, wenn Sie sicherstellen möchten, dass Sie alles haben, oder wenn etwas Unerklärliches fehlt, von dem Sie ziemlich sicher sind, dass es vorhanden istdotglob
.Wenn Sie nur das Ende in genau Dateien enthalten sein sollen ,
.cr2
aber nicht Fall Varianten (.CR2
,.Cr2
, und.cR2
), dann sollten Sie entfernennocaseglob
. Da Ihre Situation eine Datenwiederherstellung beinhaltet und Shotwell Ihnen keine der Dateien anzeigt, die Sie beim Öffnen des Verzeichnisses symbolischer Links verpasst haben - das ist schließlich der Punkt dieser Methode -, möchten Sie wahrscheinlich behaltennocaseglob
.Mach es ausführbar.
Führen Sie diesen Befehl aus, um Ihre ausführbare Skriptdatei zu markieren:
Führen Sie es an der Quelle aus und übergeben Sie das Ziel als Argument.
Wechseln Sie dann in das Quellverzeichnis, dh in den Ordner der obersten Ebene, der die Bilder enthält. Wenn sie sich beispielsweise im
Pictures
Unterverzeichnis Ihres Home-Verzeichnisses befinden, würden Sie Folgendes ausführen:Hier führen Sie das Skript aus. Übergeben Sie das Zielverzeichnis als Befehlszeilenargument an das Skript.
Wenn Sie beispielsweise möchten
cr2s
, dass auf Ihrem Desktop ein Verzeichnis mit den symbolischen Links erstellt wird, führen Sie Folgendes aus:Oder wenn Sie dieses Verzeichnis nur direkt in Ihrem Home-Ordner haben möchten:
Oder wenn Sie ein Laufwerk gemountet haben
/media/you/MyDrive
und einen Ordner darauf erstellen möchten, derlinks
die symbolischen Links enthält:Wenn das Laufwerk jedoch
/media/you/My Drive
(mit einem Leerzeichen) ist, müssen Sie ein Anführungszeichen verwenden. Jedes dieser Werke (verwenden Sie nur eines, führen Sie nicht alle aus):Aber wenn Sie
~
für Ihr Home-Verzeichnis verwenden, zitieren Sie das nicht:make-symlinks
Erstellt das Zielverzeichnis für Sie, falls es noch nicht vorhanden ist, genauso wie es darin Unterverzeichnisse erstellt. Es funktioniert jedoch weiterhin, wenn das Ziel bereits vorhanden ist.Sie können es sogar mehrmals ausführen und dasselbe Zielverzeichnis übergeben (z. B. wenn Sie es mit Ctrl+ unterbrochen haben C). Es werden jedoch
failed to create symbolic link
Fehler für die bereits vorhandenen Symlinks angezeigt, was verwirrend sein kann.Sie möchten wahrscheinlich nicht den Namen eines Verzeichnisses übergeben, das bereits vorhanden ist und nicht verwandte Dateien (wie Ihr Home-Verzeichnis) enthält
make-symlinks
. Wenn Sie dies tun, können Sie erwarten, dass eine ganze Reihe von Symlinks und Unterordnern darin erstellt werden. Sie möchten wahrscheinlich ein neues Verzeichnis verwenden - oder eines, das noch nicht existiert - fürmake-symlinks
.Importieren Sie den neu erstellten Symlink-Baum in Shotwell.
make-symlinks
Importieren Sie nach dem Ausführen einfach das Verzeichnis, das Sie an Shotwell übergeben haben, mit einer der im ersten Teil dieser Antwort angegebenen Methoden ( "Öffnen eines Ordner mit Bildern (einschließlich Unterordnern) in Shotwell" ). Sie können beispielsweise Shotwell öffnen und den Ordner hineinziehen.Da alle Einträge im Ordner entweder symbolische Links zu
.cr2
Dateien oder Verzeichnisse sind, die sie enthalten, ohne andere Dateitypen, sollte Shotwell keine der anderen Dateien sehen.quelle
Shotwell durchläuft alle Bilder in jedem Verzeichnis, in dem ein Bild geöffnet ist. Die Verwendung,
find -name '*.cr2' -exec shotwell '{}' +
wie ich ursprünglich vorgeschlagen habe, hilft also nicht wirklich. Da die Einstellungen von Shotwell eher begrenzt sind, kann ich mir nur vorstellen, nur die gewünschten Dateien zu öffnen, indem ich die Dateien selbst in ein neues Verzeichnis verschiebe.Sie können dafür verwenden
find
:Ersetzen Sie
cp
durch,mv
wenn Sie vermeiden möchten, dass doppelte Dateien erstellt werden.Anmerkungen:
mkdir ~/cr2files
Erstellen Sie ein neues Verzeichnis in Ihrem Home-Verzeichnisfind
Suche rekursiv vom aktuellen Verzeichnis abwärts durch den Baum-type f
Suche nur nach Dateien-iname
Suche nach Dateien nach Namen, Groß- und Kleinschreibung ignorieren'*.cr2'
Namen, die mit.cr2
- enden, verwenden Anführungszeichen, um zu verhindern, dass die Shell den Glob erweitert, bevor er an übergeben wirdfind
-not -path './dir/*'
schließt den Inhalt des Verzeichnissesdir
aus den Ergebnissen aus{}
repräsentiert die Pfade der gefundenen Dateien--
Nachhercp
ist anzuweisencp
, keine weiteren Optionen zu akzeptieren, wodurch Dateinamen vermieden werden, die mit-
Problemen beginnenSie können dann mit Shotwell eine beliebige Datei im neuen Verzeichnis öffnen und alle durchlaufen
quelle
Option 1 - Verwenden,
xargs
wenn Dateinamen Leerzeichen enthaltenWie die folgenden Kommentare gezeigt haben, wird die Verwendung von
back ticks
(Option 3 unten) unterbrochen, wenn Dateinamen Leerzeichen enthalten. Die sicherere Methode,find
Befehle zu verwenden und Ausgaben anshotwell
diexargs
Option zu übergeben, sieht folgendermaßen aus:Das
-print0
Flag weist find an,\0
Trennzeichen zwischen Dateinamen zu verwenden (Nullzeichen), und das-0
Flag weist darauf hinxargs
, diese\0
Trennzeichen zu erwarten .Wir danken für die hervorragenden Antworten, die hier auf Stack Overflow gefunden wurden ( So leiten Sie eine Liste der vom Befehl find zurückgegebenen Dateien weiter ).
Option 2 - Verwenden,
-exec
wenn Dateinamen Leerzeichen enthaltenWie ein Kommentar unten hervorhebt, unterstützt die
-exec
Option auch Dateinamen, die Leerzeichen enthalten. Andere Kommentare unten weisen darauf hin, dass dies unterbrochen wird, wenn die Anzahl der Dateien überschritten wird. Dies würde folgendermaßen aussehen:Option 3 - Wenn Dateinamen keine Leerzeichen enthalten
In früheren Zeiten, bevor Dateinamen Leerzeichen hatten und 256 Zeichen lang wurden, funktionierte diese Option einwandfrei. Sie finden diese Option auf vielen anderen Websites, sollten diese Option jedoch nicht verwenden . Früher war es am einfachsten , den
find
Befehl zu verwenden und die Ausgabe an zu übergebenshotwell
:Dies startet das
find
aus dem aktuellen Verzeichnis und umfasst alle Unterverzeichnisse:$(...)
Bash..
gibtfind
einen Ausgangspunkt an, der das aktuelle Verzeichnis ist. Sie könnten passieren/home/$USER/Pictures
oder etwas anderes statt.
.-name
weist find an, nach Dateinamen (nicht nach Verzeichnissen) zu suchen.shotwell
. dh Sie können es verwenden fürcat
,head
,tail
und die meisten anderen gängigen Linux - Befehle.quelle
xargs
und-0
alle Dateinamen verwenden. Verwenden Sie die NULL-Zeichenfolge als Trennzeichen$(
)
Benutzer zwar die Syntax der Befehlssubstitution der Syntax der Backtick-Befehlssubstitution vorziehen , dies jedoch für dieses Problem nicht relevant ist - beide schlagen auf genau dieselbe Weise fehl. @Serg Ich schlage vor, eine neue Antwort zu veröffentlichen, wie es gehtxargs
. (Das Einsetzen der Substitution"
"
würde auch nicht funktionieren: Allefind
Ergebnisse würden als ein einziges Argument übergeben.)xargs
OptionStack Overflow
beim Schreiben dieser Antwort gesehen. Ich werde auch mit dieser Option erweitern. Leider musste ich heute Morgen mit Windows 8 booten, um eine beschädigteNTFS
Partition zu reparieren, sodass das Testen problematisch war. Ich werde die Antwort jedoch später aktualisieren. Vielen Dank für den Hinweis :)-exec
?-exec
Option auch hinzufügen :)Mir war nicht bewusst, dass shotwell sogar Rohdateien geöffnet hat. Ich bin mir sicher, dass Sie mit Digikam oder Darktable mehr Kilometer sammeln können. Digikam wird mit einigen Kde-Komponenten geliefert und ist ein ziemlich guter Fotomanager. Darktable verfügt über sehr gute zerstörungsfreie Bearbeitungsfunktionen.
quelle
.cr2
Dateien in einem Ordner erweitern? Wenn ja, könnte dies wertvoll sein, da das Originalplakat Probleme hatte, Shotwell dazu zu bringen, nur die.cr2
Dateien anzuzeigen. Obwohl ich meiner Antwort zusätzliche Ansätze hinzugefügt habe , um Shotwell zum Durchsuchen nur dieser und keiner anderen Dateien zu verwenden, vermute ich ziemlich stark, dass Shotwell nicht das beste Tool dafür ist.