Quelque chose comme
shotwell *.cr2 ./
Cela ne fonctionne pas, mais en gros, je veux utiliser shotwell pour ouvrir tous les fichiers se terminant par .cr2
et dans le répertoire actuel (y compris les sous-dossiers)
Le contexte est qu'il me manque des photos que j'ai prises sur mon appareil photo que j'ai depuis supprimées de ma carte mémoire.
Il y a des miniatures pour eux dans les "images manquantes" de Shotwell mais je ne les trouve pas. Alors j'ai pensé que je courrais photorec
pour essayer de les trouver. En conséquence, photorec m'a donné un tas de dossiers et de fichiers, suffisamment pour qu'il remplisse mon disque dur. Au lieu de passer au crible tous les fichiers un par un, j'ai décidé de rechercher des fichiers .cr2 sur mon disque dur, tout en évitant un dossier particulier appelé Photogs
que je sais ne pas en avoir car ils ne faisaient pas partie du photorec
vidage de données.
la source
Réponses:
Habituellement, vous voudrez simplement ouvrir Shotwell et faire glisser le dossier.
Si vous en avez besoin, vous pouvez demander au shell de créer une liste de fichiers CR2 et demander à Shotwell de n'ouvrir que ces fichiers. Parfois, c'est peut-être ce que vous voulez, mais dans ce cas, cela n'a pas fait exactement ce dont vous aviez besoin en raison du comportement de Shotwell - dans certaines autres circonstances, une fonctionnalité - de vous montrer automatiquement d'autres fichiers d'image (de tous types) résidant dans le mêmes dossiers que les images que vous avez ouvertes.
Pour vous assurer que Shotwell ne connaît que les images qui vous intéressent, vous pouvez cloner l'arborescence de répertoires ailleurs, en copiant uniquement les
.cr2
fichiers et les dossiers qui les contiennent, mais rien d'autre. Cela peut cependant occuper un espace supplémentaire substantiel. Une autre approche consiste donc à construire une hiérarchie de liens symboliques - où au lieu d'avoir une nouvelle arborescence de répertoires de copies de vos.cr2
fichiers d' origine , vous disposez d'une nouvelle arborescence de répertoires de liens symboliques . Cela prend beaucoup moins de place.Cette réponse couvre toutes ces approches.
Ouverture d'un dossier d'images (y compris les sous-dossiers) dans Shotwell
Shotwell lui-même vous donne deux façons d'ouvrir toute une arborescence de répertoires de photos. Si cela fonctionne pour vous, vous n'aurez pas besoin de faire quoi que ce soit d'intelligent dans la ligne de commande ou même de l'utiliser du tout. Sinon, vous pourriez finir par le faire en relation avec une autre technique. (Par exemple, si vous finissez par créer un nouveau répertoire de liens symboliques ou des copies de vos
.cr2
fichiers, vous pouvez utiliser l'une de ces façons pour l'ouvrir.)Méthode 1: Ouvrez simplement le dossier entier dans Shotwell.
Dans Shotwell, dans le menu Fichier , cliquez sur Importer à partir du dossier . Sélectionnez ensuite le dossier dans lequel vous souhaitez importer des images. Cela ne se limitera pas aux
.cr2
fichiers, mais si vous ouvrez des fichiers à partir de plusieurs sous-dossiers contenant des.cr2
images créées à partir d'un appareil photo numérique, ce seront probablement les seuls fichiers présents.Voir la réponse de Jakob à Afficher toutes les images de manière récursive (inclure tous les sous-dossiers) pour plus d'informations.
Méthode 2: faites glisser le dossier dans Shotwell.
Avec la plupart des environnements de bureau et des navigateurs de fichiers, vous pouvez également ouvrir Shotwell et faire glisser le dossier contenant vos images dans la fenêtre Shotwell. Comme Importer à partir d'un dossier , c'est une autre façon que Shotwell recommande d'ouvrir des photos.
Lorsque vous faites glisser depuis une fenêtre de navigateur de fichiers ou votre bureau vers Shotwell, vous pouvez faire glisser vers une bibliothèque spécifique. Ou si vous n'avez pas plusieurs bibliothèques configurées, vous pouvez simplement faire glisser n'importe où et cela fonctionne. (Vous n'avez même pas besoin de faire glisser dans le volet gauche.)
Cette méthode est très pratique et elle est aussi puissante que la sélection manuelle du dossier (avec Fichier > Importer à partir du dossier , comme décrit ci-dessus). Lorsque vous ouvrez des fichiers ou des dossiers à l'aide de l' une de ces méthodes , Shotwell vous donne la possibilité d'ouvrir les photos sans les copier dans sa bibliothèque.
Pour importer sans copier, cliquez sur Importer sur place au lieu de Copier des photos .
Lancement de Shotwell avec une liste de noms de fichiers d'images
Si, pour une raison quelconque, vous voulez ou devez le faire en exécutant une commande dans le terminal, vous pouvez exécuter la
shotwell
commande et lui passer le nom de fichier de chaque image comme argument. Globstar vous facilite la tâche:Cela ouvre les
.cr2
fichiers situés n'importe où dans le répertoire actuel. Il diffère de l'exécution de Shotwell puis du déplacement du dossier dans la mesure où Shotwell essaiera uniquement d'importer les fichiers dont vous lui donnez le nom. Cependant, étant donné que Shotwell affiche souvent d'autres fichiers image provenant des mêmes dossiers que les fichiers que vous lui avez demandé d'ouvrir, cela peut ne pas convenir à vos besoins. (Et de plus amples informations que vous avez données sur votre problème suggèrent qu'il ne l'est pas . Voir ci-dessous pour une alternative.)Cela n'inclut pas les fichiers ou sous-dossiers dont les noms commencent par
.
. Cependant, si vous avez des fichiers CR2 dont les noms commencent par un point, la plupart du temps, vous ne voudrez probablement pas les ouvrir dans Shotwell de toute façon. Sauf si vous avez délibérément nommé vos fichiers ou dossiers de cette manière, un fichier dot avec une extension de nom de fichier d'image ou de document est plus susceptible d'être un fichier de métadonnées plutôt qu'une image ou un document réel. Par exemple, macOS ajoute souvent de tels fichiers (par exemple,._kittens.cr2
pour une image réellekittens.cr2
) lors de l'accès à des supports externes (y compris des lecteurs flash et des appareils photo numériques).Si vous souhaitez également rechercher des fichiers dont les noms commencent par
.
ou qui se trouvent dans des dossiers dont les noms commencent par.
, activez également dotglob. Vous pouvez le faire avecshopt -s dotglob
ou en passant les deuxglobstar
etdotglob
aushopt
builtin:Par défaut, les globes sont sensibles à la casse. Mais vous pouvez faire correspondre les noms de fichiers insensibles à la casse , de manière à ouvrir les fichiers se terminant par
.cr2
,.Cr2
,.cR2
et.CR2
. Pour ce faire, soit:Activez nocaseglob en exécutant
shopt -s
avecnocaseglob
, seul ou avec d'autres options de shell. Par exemple, pour exécutershotwell
sur tous les.cr2
fichiers, en recherchant de manière insensible à la casse et en incluant les.
fichiers et les fichiers dans les.
répertoires:Ou utilisez-le
.[cC][rR]2
au lieu de.cr2
dans votre modèle de glob lui-même. Par exemple, cela accomplit la même chose que ci-dessus:Notez que la sensibilité à la casse est entièrement distincte de la correspondance ou non des
.
fichiers et des dossiers. Vous pouvez supprimerdotglob
des exemples ci-dessus et ils peuvent toujours être insensibles à la casse.Pour spécifier un répertoire plutôt que de simplement utiliser le répertoire courant, mettez son nom et un
/
avant le**/*.cr2
glob. Par exemple, remplacer lashotwell
commande ci-dessus par celle-ci ouvrira tous les.cr2
fichiers duPictures
sous - répertoire de votre répertoire personnel:Contrairement à la première commande qui utilise votre répertoire actuel, peu importe où vous exécutez cette commande, vous direz à Shotwell d'ouvrir les mêmes fichiers.
Essai
Si vous devez vraiment utiliser le terminal pour cela, alors je suppose que cela peut faire partie de quelque chose de plus complexe. Si vous le souhaitez, vous pouvez tester ces commandes avant de les exécuter en les remplaçant
shotwell
parprintf '%s\n'
. Au lieu de transmettre les noms de fichiers à Shotwell, cela les répertorie un par ligne. Par exemple, sur ma machine:Désactivation de Globstar et d'autres options de shell
L'option shell globstar a été activée pour fonctionner, ce que la
shopt -s globstar
commande (ci-dessus) a fait. S'il est déjà activé, vous n'avez pas besoin de plusieurs commandes. Et vous n'avez besoin de définir globstar qu'une seule fois par instance de shell.Vous pouvez désactiver globstar en exécutant:
Et vous pouvez vérifier si globstar est activé ou désactivé en exécutant:
Si vous utilisez globstar dans un script, vous devriez envisager de le désactiver s'il peut y avoir du code qui vient ensuite dans le même script qui n'est pas écrit en pensant à globstar. Par exemple, écrire
**
quand vous voulez dire*
n'est généralement pas un problème lorsque globstar est désactivé, mais avec globstar activé, cela peut provoquer de graves problèmes en faisant en sorte qu'une commande affecte bien plus de fichiers que ce que quelqu'un avait prévu.De même, si vous avez utilisé dotglob ou nocaseglob et que vous souhaitez également les désactiver, vous pouvez le faire avec
shopt -u dotglob
etshopt -u nocaseglob
, respectivement. Vous pouvez également passer plusieurs options de shell àshopt -u
pour les désactiver en même temps. Par exemple, pour désactiverglobstar,
dotglob
etnocaseglob
:Par rapport à globstar, il y a moins d'erreurs graves que vous pourriez faire parce que vous avez oublié que vous avez laissé dotglob ou nocaseglob. Mais d'autres personnes (y compris les personnes que vous consultez sur des sites comme Ask Ubuntu) supposent généralement que dotglob et nocaseglob sont désactivés lorsqu'ils vous suggèrent des commandes à utiliser, sauf si vous leur dites le contraire.
Pour plus d'informations sur ces options de shell liées aux globes (et également sur les globes en général ), consultez le manuel de référence bash . Ils sont tous couverts principalement dans 4.3.2 The Shopt Builtin . Pour globstar, voir aussi 3.5.8.1 Match Matching . Pour dotglob, voir aussi 3.5.8 Extension du nom de fichier .
Création d'une nouvelle arborescence de répertoires
Étant donné que dans votre cas, vous semblez vraiment avoir besoin de Shotwell pour n'afficher que les
.cr2
fichiers, vous avez des non-.cr2
fichiers dans les mêmes dossiers que les.cr2
fichiers, et la navigation dans Shotwell propose automatiquement ces fichiers aussi , il semble que vous aurez besoin d'avoir un dossier qui ne contient aucun autre fichier image que les.cr2
fichiers que vous essayez d'ouvrir.Le déplacement des fichiers, comme vous l'avez suggéré , est une approche, mais je recommande plutôt de copier les fichiers ou, mieux, de créer des liens symboliques vers les fichiers (voir également FOLDOC ), car:
Vous devez également prendre une autre décision. Créez-vous toutes les nouvelles entrées (qu'il s'agisse de copies ou de liens symboliques) dans le même répertoire, aplatissant la hiérarchie des fichiers? Ou créez-vous des répertoires à la destination correspondant à chacun des répertoires à la source qui contiennent au moins un
.cr2
fichier?L'aplatissement de la hiérarchie des fichiers vous permet de voir tous les fichiers à la fois, facilement. En particulier, il est facile de voir les noms et tailles des fichiers en même temps, ainsi que de sélectionner n'importe quelle combinaison de fichiers dans un navigateur de fichiers graphique.
Mais il perd également des informations sur les dossiers dans lesquels ils se trouvaient, ce qui peut être utile (bien que vous puissiez retourner dans le dossier d'origine et les rechercher si vous ne déplacez pas les fichiers).
Le plus gros problème avec l'aplatissement de la hiérarchie des fichiers, cependant, est ce qui se passe si vous avez deux fichiers ou plus du même nom à différents endroits . Si vous aplatissez la hiérarchie des fichiers, selon la façon dont vous le faites, soit tous, sauf le premier, ne seront pas copiés (ou liés) et vous obtiendrez une erreur ou un avertissement, ou tous sauf la dernière copie (ou lien) être écrasé .
C'est une autre raison pour laquelle je recommande de copier ou de créer des liens symboliques plutôt que de déplacer des fichiers. Si vous "réussissez" à déplacer plusieurs fichiers dans le même fichier, vous avez perdu tout sauf le dernier!
En raison des inconvénients de tout aplatir dans un seul répertoire sans sous-répertoires, les approches que je prends ici créent une nouvelle arborescence de répertoires à la destination.
Méthode 1: copie
Je montre cela d'abord parce que c'est un peu plus simple, mais je vous suggère plutôt de créer des liens symboliques ("Way 2"), surtout si le lecteur de destination peut ne pas avoir assez d'espace pour contenir tous les fichiers. "Way 2", qui est un peu plus compliqué, est beaucoup plus détaillé car il semble y avoir moins de ressources sur la façon d'utiliser cette technique, c'est la façon dont je m'attends à ce que la plupart des gens dans cette situation préfèrent, et des informations qui s'appliquent aux deux méthodes - des conseils de base pour échapper aux espaces dans les chemins - sont donnés ici plutôt qu'ici.
Lorsque vous devez copier une arborescence de répertoires et que vous devez personnaliser l'opération de copie, vous devez généralement utiliser à la
rsync
place decp
. C'est l'un de ces cas.En remplaçant
src
par le chemin d'accès au répertoire de niveau supérieur contenant tous vos fichiers CR2 et en remplaçantdest
par le nom du répertoire que vous souhaitez créer qui contiendra une hiérarchie de liens symboliques vers les fichiers CR2, exécutez:N'oubliez pas
/
le nom après le nom du répertoire source, sauf si vous voulez qu'un répertoire de niveau supérieur supplémentaire soit créé à l'intérieurdest
. Autrement dit, si vous omettez la fin/
, puisrsync
fera le répertoire de destination pour vous, à l'intérieurdest
. Par exemple, supposonssrc
est un chemin relatif contenant no/
. Alors:src/
dans votrersync
commande, vous obtenez un lien symboliquedest/foo/bar.cr2
pour le fichiersrc/foo/bar.cr2
.src
dans votrersync
commande, vous obtenez un lien symbolique pour le fichier .dest/src/foo/bar.cr2
src/foo/bar.cr2
Comme il pourrait être déroutant pour le répertoire de niveau supérieur où les liens symboliques seront placés d'avoir le même nom que celui du répertoire de niveau supérieur contenant les
.cr2
fichiers vers lesquels les liens symboliques pointeront, je vous recommande d'inclure le/
à la fin de la destination nom du répertoire dans votrersync
commande. (Et, pour le répertoire source, donnez-lui un répertoire vide, qui n'existe pas ou qui est autrement dédié à cet effet. Sinon, vous encombrerez un autre dossier.)Comme cela est généralement le cas lorsque vous passez le nom d'un fichier ou un répertoire à un programme de ligne de commande ou d'un script, si vos chemins de répertoire de destination ou de source contiennent des espaces vides (ou des caractères traités spécialement par la coquille, comme
\
,$
,'
et divers autre ponctuation), alors vous devrez les citer . J'ai détaillé comment procéder, pour le cas le plus courant des espaces, dans "Way 2" - les conseils sur la citation dans cette section s'appliquent également ici. Cependant, si vous ne savez pas comment citer le nom d'un dossier, vous pouvez demander à Ubuntu de le faire pour vous en faisant simplement glisser le dossier dans le Temrminal; son chemin complet sera collé avec une citation correcte .Après avoir copié uniquement les
.cr2
fichiers et les dossiers qui les contiennent, vous pouvez ouvrir le dossier de destination dans Shotwell. (Voir «Ouverture d'un dossier d'images (y compris les sous-dossiers) dans Shotwell» ci-dessus.) Cependant, avant dersync
commencer, je vous recommande de décider si vous souhaitez ignorer les entrées commençant par.
et si vous souhaitez inclure les entrées avec des suffixes variant pour la casse. Si c'est le cas, vous devrez exécuter unersync
commande légèrement différente .Personnalisation du traitement des entrées en pointillés et de la sensibilité à la casse
Vous souhaiterez peut-être utiliser une
rsync
commande différente pour modifier si les fichiers et répertoires commençant par un point sont ignorés et si vous souhaitez ou non respecter la casse pour faire correspondre le suffixe.cr2
.La commande ci - dessus inclut des répertoires et des fichiers dont les noms commencent par
.
. Pour exclure de tels fichiers et répertoires, mettez--exclude='.*/' --exclude='.*'
avant tous les autres--include
s et--exclude
s. Autrement dit, utilisezrsync
plutôt cette commande (avec les substitutions appropriées poursrc
etdest
, bien sûr):Les
rsync
commandes indiquées jusqu'ici ont été sensibles à la casse et ne seront pas copier des fichiers cette fin.CR2
,.Cr2
ou.cR2
plutôt que.cr2
. Si vous souhaitez que ces fichiers soient copiés, vous devrez en tenir compte en utilisant le--include
modèle*.[cC][rR]2
à la place de*.cr2
.Cette troisième commande ne respecte pas la casse et (comme la première commande) ne saute pas les fichiers et répertoires dont les noms commencent par
.
:Si vous adoptez l'approche de la copie de fichiers avec
rsync
, et vous ne savez pas avec laquelle de ces commandes vous voulez, je suggère d'utiliser celle-ci si vous voulez vous assurer de ne rien manquer. Cependant, vous devez savoir que les fichiers dot peuvent contenir des métadonnées et que les fichiers dot nommés comme des images peuvent ne pas être vraiment des images. Voir les discussions sur les fichiers dot dans la section "Lancement de Shotwell avec une liste de noms de fichiers image" ci-dessus, et sur les fichiers dot et la sensibilité à la casse dans "Way 2" ci-dessous.Cette quatrième commande ne respecte pas la casse et (comme la deuxième commande) ignore les fichiers et répertoires dont les noms commencent par :
.
Méthode 2: création de liens symboliques
C'est ce que je vous recommande de faire, bien que la voie 1 soit correcte si vous avez suffisamment d'espace sur le lecteur de destination. Vous n'avez pas besoin de lire la voie 1 pour l'utiliser.
La méthode présentée ici fait une liste de
.cr2
fichiers et fait une boucle dans la liste, créant des répertoires cibles selon les besoins et les remplissant avec des liens symboliques vers chaque.cr2
fichier.C'est juste assez compliqué pour que je suggère de le mettre dans un script plutôt que de le taper de manière interactive. Vous pouvez placer le script où vous le souhaitez, mais pour plus de commodité, je vais vous montrer comment le faire avec le script placé directement dans votre dossier de départ.
Écrivez (ou collez) le script.
Créez un fichier texte,,
make-symlinks
dans votre dossier de départ. Aucune extension de fichier n'est nécessaire.Vous pouvez le faire avec n'importe quel éditeur de texte, comme Vim, Nano, Gedit ou Leafpad. Cependant, n'utilisez pas de traitement de texte comme LibreOffice Writer. (Vous pouvez même le faire en exécutant
cat > ~/make-symlinks
, en collant le contenu du fichier et en appuyant sur Ctrl+ Dsur une nouvelle ligne, si vous le souhaitez.)Si vous nommez le script autrement que
make-symlinks
, assurez-vous d'utiliser ce nom lorsque vous exécutez des commandes qui utilisent le script ultérieurement.Mettez-le dans le fichier et enregistrez le fichier. Ce script utilise globstar, une fonction Bash expliquée ci-dessus dans "Lancement de Shotwell avec une liste de noms de fichiers d'images" .
Vous pouvez modifier la façon dont il gère les entrées en pointillés et la sensibilité à la casse.
Selon vos besoins, vous souhaiterez peut-être apporter des modifications:
Si vous ne souhaitez pas inclure les
.cr2
fichiers dont les noms commencent par.
ou qui résident dans des répertoires dont les noms commencent par.
, supprimezdotglob
de lashopt
ligne.Les fichiers et répertoires dont le nom commence par
.
sont souvent utilisés pour les métadonnées (voir la section «Lancement de Shotwell avec une liste de noms de fichiers d'images» ci-dessus). D'un autre côté, si vous voulez vous assurer que vous avez tout, ou s'il y a quelque chose inexplicablement manquant dont vous êtes presque sûr, alors vous devriez le garderdotglob
.Si vous souhaitez inclure uniquement les fichiers se terminant exactement
.cr2
mais pas des variantes de cas (.CR2
,.Cr2
et.cR2
), alors vous devez supprimernocaseglob
. Étant donné que votre situation implique la récupération de données et Shotwell ne vous montrera aucun des fichiers que vous avez manqués lorsque vous ouvrez le répertoire des liens symboliques - c'est le but de cette méthode, après tout - vous voudrez probablement le conservernocaseglob
.Rendez-le exécutable.
Exécutez cette commande pour marquer l'exécutable de votre script:
Exécutez-le à la source et passez la destination comme argument.
Ensuite, changez de répertoire pour le répertoire source, c'est-à-dire le dossier de niveau supérieur qui contient les images. Par exemple, s'ils se trouvent dans le
Pictures
sous - répertoire de votre répertoire personnel, vous exécuterez:C'est là que vous exécuterez le script. Passez le répertoire de destination au script comme argument de ligne de commande.
Par exemple, si vous souhaitez qu'un répertoire appelé
cr2s
soit créé sur votre bureau pour contenir les liens symboliques, exécutez:Ou si vous voulez juste ce répertoire directement dans votre dossier personnel:
Ou si vous avez un lecteur monté sur
/media/you/MyDrive
et que vous souhaitez créer un dossier appelélinks
pour contenir les liens symboliques:Mais si le lecteur est
/media/you/My Drive
(avec un espace), vous devez utiliser la citation. N'importe lequel de ces travaux (utilisez un seul, ne les exécutez pas tous):Mais si vous utilisez
~
pour votre répertoire personnel, ne citez pas cela:make-symlinks
crée le répertoire de destination pour vous s'il n'existe pas déjà, tout comme il crée des sous-répertoires en son sein. Cependant, cela fonctionne toujours si la destination existe déjà.Vous pouvez même l'exécuter plusieurs fois et passer le même répertoire de destination (par exemple, si vous l'avez interrompu avec Ctrl+ C), mais vous obtiendrez des
failed to create symbolic link
erreurs pour les liens symboliques qui existent déjà, et cela pourrait être déroutant.Vous ne voulez probablement pas transmettre le nom d'un répertoire qui existe déjà et contient des fichiers non liés (comme votre répertoire personnel)
make-symlinks
. Si vous le faites, vous pouvez vous attendre à ce qu'un tas de liens symboliques et de sous-dossiers y soient créés. Vous voudrez probablement utiliser un nouveau répertoire - ou qui n'existe pas encore - pourmake-symlinks
.Importez l'arborescence des liens symboliques nouvellement créée dans Shotwell.
Après avoir exécuté
make-symlinks
, importez simplement le répertoire que vous lui avez transmis dans Shotwell, en utilisant l'une des méthodes indiquées dans la première partie de cette réponse ( "Ouverture d'un dossier d'images (y compris les sous-dossiers) dans Shotwell" ). Par exemple, vous pouvez ouvrir Shotwell et faire glisser le dossier.Étant donné que toutes les entrées du dossier sont des liens symboliques vers des
.cr2
fichiers ou des répertoires qui les contiennent, sans aucun autre type de fichier, Shotwell ne devrait voir aucun des autres fichiers.la source
Shotwell parcourra toutes les images trouvées dans chaque répertoire où une image est ouverte, donc en utilisant
find -name '*.cr2' -exec shotwell '{}' +
comme je l'ai suggéré initialement n'aide pas vraiment. Étant donné que les paramètres de Shotwell sont plutôt limités, la seule façon dont je peux penser à n'ouvrir que les fichiers que vous souhaitez est de déplacer les fichiers vers un nouveau répertoire par eux-mêmes.Vous pouvez utiliser
find
pour cela:Remplacez
cp
parmv
si vous souhaitez éviter de créer des fichiers en double.Remarques:
mkdir ~/cr2files
créer un nouveau répertoire dans votre répertoire personnelfind
recherche récursivement du répertoire courant vers le bas à travers l'arborescence-type f
rechercher uniquement les fichiers-iname
rechercher des fichiers par nom, en ignorant la casse'*.cr2'
noms se terminant par.cr2
- utilisez des guillemets pour empêcher le shell d'étendre le glob avant qu'il ne soit transmis àfind
-not -path './dir/*'
exclura le contenu du répertoiredir
des résultats{}
représente les chemins des fichiers trouvés--
aprèscp
est de dire decp
ne pas accepter d'autres options, ce qui évite tout nom de fichier commençant par-
causer des problèmesVous pouvez ensuite ouvrir n'importe quel fichier dans le nouveau répertoire avec Shotwell et les parcourir tous
la source
Option 1 - Utilisation
xargs
lorsque les noms de fichiers contiennent des espacesComme l'ont souligné les commentaires ci-dessous, l'utilisation de
back ticks
(Option 3 ci-dessous) sera interrompue lorsque les noms de fichiers contiennent des espaces. La méthode la plus sûre d'utiliser lafind
commande et de passer la sortie à l'shotwell
utilisation de l'xargs
option ressemble à ceci:L'
-print0
indicateur indique à find d'utiliser des\0
délimiteurs (caractère nul) entre les noms de fichiers, et l'-0
indicateur indiquexargs
à attendre ces\0
délimiteurs.Nous remercions les excellentes réponses trouvées ici ( comment diriger la liste des fichiers retournés par la commande find ) sur Stack Overflow.
Option 2 - Utilisation
-exec
lorsque les noms de fichiers contiennent des espacesComme le remarque ci-dessous, l'
-exec
option prend également en charge les noms de fichiers contenant des espaces. Les autres commentaires ci-dessous indiquent que cela se casse lorsque le nombre de fichiers dépasse. Cela ressemblerait à ceci:Option 3 - Lorsque les noms de fichiers n'ont pas d'espaces
Dans les temps anciens, avant que les noms de fichiers aient des espaces et deviennent longs de 256 caractères, cette option fonctionnait bien. Vous trouverez cette option mentionnée sur de nombreux autres sites Web, mais vous ne devez pas utiliser cette option . À l'époque, utiliser la
find
commande et transmettre la sortie àshotwell
était la méthode la plus simple:Cela démarre à
find
partir du répertoire actuel et inclut tous les sous-répertoires:$(...)
dans bash..
donnefind
un point de départ qui est le répertoire courant. Vous pouvez passer/home/$USER/Pictures
ou autre chose au lieu de.
.-name
indique à find de rechercher les noms de fichiers (pas les répertoires).shotwell
. dire que vous pouvez l' utiliser pourcat
,head
,tail
et la plupart des autres commandes Linux populaires.la source
xargs
et d'utiliser-0
tous les noms de fichiers utilisez une chaîne NULL comme séparateur$(
)
syntaxe de substitution de commandes à la syntaxe de substitution de commandes de backtick, ce n'est pas pertinent pour ce problème - ils échouent tous les deux exactement de la même manière. @Serg Je suggère de poster une nouvelle réponse sur la façon de le fairexargs
. (La substitution"
"
ne fonctionnerait pas non plus: tous lesfind
résultats seraient transmis comme un seul argument.)xargs
option surStack Overflow
lors de l'écriture de cette réponse. Je développerai également cette option. Malheureusement, j'ai dû démarrer avec Windows 8 ce matin pour corriger uneNTFS
partition corrompue, donc les tests ont été problématiques. Je mettrai à jour la réponse plus tard. Merci de l'avoir signalé :)-exec
?-exec
option :)Je ne savais pas que Shotwell avait même ouvert des fichiers bruts. Je suis certain que vous pourriez obtenir plus de kilométrage avec digikam ou darktable. Digikam est livré avec quelques composants Kde et est un très bon gestionnaire de photos. Darktable est livré avec de très bonnes capacités d'édition non destructives.
la source
.cr2
fichiers dans un dossier? Si c'est le cas, cela pourrait être utile, car l'affiche originale a eu du mal à faire en sorte que Shotwell ne montre que les.cr2
fichiers. Bien que j'aie ajouté des approches supplémentaires à ma réponse pour permettre d'utiliser Shotwell pour parcourir uniquement ces fichiers et pas d'autres, je soupçonne assez fortement que Shotwell n'est pas le meilleur outil pour cela.