Coś jak
shotwell *.cr2 ./
To nie działa, ale w zasadzie chcę użyć shotwell do otwarcia wszystkich plików, które kończą się .cr2
w bieżącym katalogu i (w tym w podfolderach)
Kontekst polega na tym, że brakuje mi zdjęć, które zrobiłem aparatem, które usunąłem z karty pamięci.
W „brakujących obrazach” shotwell są dla nich miniatury, ale nie mogę ich znaleźć. Pomyślałem więc, że pobiegnę, by photorec
je znaleźć. W rezultacie photorec dostarczyło mi mnóstwo plików i folderów, co wystarczyło, aby zapełnić mój dysk twardy. Zamiast przeszukiwać wszystkie pliki jeden po drugim, postanowiłem wyszukać pliki .cr2 na moim dysku twardym, unikając określonego folderu, o Photogs
którym wiem, że ich nie ma, ponieważ nie były one częścią photorec
zrzutu danych.
command-line
shotwell
użytkownik285884
źródło
źródło
Odpowiedzi:
Zwykle wystarczy otworzyć Shotwell i przeciągnąć do folderu.
W razie potrzeby możesz zmusić powłokę do utworzenia listy plików CR2 i powiedzieć Shotwellowi, aby otworzył tylko te pliki. Czasami może to być to, czego chcesz, ale w tym przypadku nie zrobiło to dokładnie tego, czego potrzebujesz, ze względu na zachowanie Shotwell - w niektórych innych przypadkach, funkcję - automatycznego wyświetlania innych plików graficznych (wszystkich typów) znajdujących się w te same foldery, co otwarte obrazy.
Aby upewnić się, że Shotwell wie tylko o obrazach, którymi jesteś zainteresowany, możesz sklonować drzewo katalogów gdzie indziej, kopiując tylko
.cr2
pliki i foldery, które je zawierają, ale nic więcej. Może to jednak zająć znaczną dodatkową przestrzeń. Zatem innym podejściem jest zbudowanie hierarchii dowiązań symbolicznych - w której zamiast posiadania nowego drzewa katalogów kopii oryginalnych.cr2
plików, masz nowe drzewo katalogów syminks do nich. Zajmuje to znacznie mniej miejsca.Ta odpowiedź obejmuje wszystkie te podejścia.
Otwieranie folderu zdjęć (w tym podfolderów) w Shotwell
Sam Shotwell oferuje dwa sposoby otwarcia całego drzewa katalogów ze zdjęciami. Jeśli to zadziała, nie będziesz musiał robić nic sprytnego w wierszu poleceń, a nawet w ogóle go używać. Jeśli nie, możesz to zrobić w połączeniu z inną techniką. (Na przykład, jeśli utworzysz nowy katalog dowiązań symbolicznych lub kopii swoich
.cr2
plików, możesz użyć jednego z tych sposobów, aby go otworzyć.)Sposób 1: Wystarczy otworzyć cały folder w Shotwell.
W Shotwell w menu Plik kliknij polecenie Importuj z folderu . Następnie wybierz folder, z którego chcesz importować obrazy. Nie będzie to ograniczone do
.cr2
plików, ale jeśli otwierasz pliki z wielu podfolderów zawierających.cr2
obrazy utworzone z aparatu cyfrowego, najprawdopodobniej będą to jedyne obecne pliki.Zobacz Jakoba odpowiedź do Pokaż wszystkie rekursywnie (obejmują wszystkie podfoldery) aby uzyskać więcej informacji.
Sposób 2: Przeciągnij folder do Shotwell.
W większości środowisk graficznych i przeglądarek plików możesz także otworzyć Shotwell i przeciągnąć folder zawierający twoje zdjęcia do okna Shotwell. Podobnie jak w przypadku importu z folderu , to kolejny sposób, w jaki Shotwell zaleca otwieranie zdjęć.
Przeciągając z okna przeglądarki plików lub pulpitu do Shotwell, możesz przeciągnąć do określonej biblioteki. Lub jeśli nie masz skonfigurowanych wielu bibliotek, możesz po prostu przeciągnąć w dowolnym miejscu i to działa. (Nie musisz nawet przeciągać do lewego panelu).
Ta metoda jest bardzo wygodna i równie skuteczna, jak ręczne wybranie folderu (za pomocą polecenia Plik > Importuj z folderu , jak opisano powyżej). Gdy otwierasz pliki lub foldery przy użyciu jednej z tych metod , Shotwell daje Ci możliwość otwarcia zdjęć bez kopiowania ich do swojej biblioteki.
Aby zaimportować bez kopiowania, kliknij opcję Importuj na miejscu zamiast Kopiuj zdjęcia .
Uruchamianie Shotwell z listą nazw plików obrazów
Jeśli z jakiegoś powodu chcesz lub musisz to zrobić, uruchamiając polecenie w terminalu, możesz uruchomić
shotwell
polecenie i przekazać do niego nazwę pliku każdego obrazu jako argument. Globstar ułatwia:To otwiera
.cr2
pliki znajdujące się w dowolnym miejscu w bieżącym katalogu. Różni się to od uruchomienia Shotwell, a następnie przeciągnięcia folderu, ponieważ Shotwell będzie próbował tylko zaimportować pliki, których nazwy nadasz. Ponieważ jednak Shotwell często pokazuje inne pliki obrazów z tych samych folderów, co pliki, które kazałeś mu otworzyć, może to nie być odpowiednie dla twoich potrzeb. ( Dalsze informacje o problemie sugerują, że tak nie jest . Alternatywę można znaleźć poniżej).Nie obejmuje to plików ani podfolderów, których nazwy rozpoczynają się od
.
. Jeśli jednak masz pliki CR2, których nazwy zaczynają się od kropki, prawdopodobnie przez większość czasu nie chcesz ich otwierać w Shotwell. Chyba że celowo nazwałeś swoje pliki lub foldery w ten sposób, plik kropkowy z rozszerzeniem pliku obrazu lub dokumentu jest bardziej prawdopodobne niż plik metadanych, a nie rzeczywisty obraz lub dokument. Na przykład macOS często dodaje takie pliki (np.._kittens.cr2
Rzeczywisty obrazkittens.cr2
) podczas uzyskiwania dostępu do zewnętrznych nośników (w tym dysków flash i aparatów cyfrowych).Jeśli chcesz również znaleźć pliki, których nazwy zaczynają się od
.
lub które znajdują się w folderach, których nazwy zaczynają się od.
, włącz również dotglob. Możesz to zrobić za pomocąshopt -s dotglob
lub przekazując obaglobstar
idotglob
doshopt
wbudowanego:Domyślnie w globach rozróżniana jest wielkość liter. Ale może chcesz , aby dopasować nazwy plików rozróżniana wielkość liter , tak aby otworzyć pliki z rozszerzeniem
.cr2
,.Cr2
,.cR2
, i.CR2
. Aby to zrobić:Włącz nocaseglob, uruchamiając
shopt -s
gonocaseglob
, sam lub z innymi opcjami powłoki. Na przykład, aby uruchomićshotwell
na wszystkich.cr2
plikach, przeszukiwać bez rozróżniania wielkości liter i dołączać -files.
i pliki do.
-directories:Lub użyj
.[cC][rR]2
zamiast.cr2
samego wzorca globu. Na przykład osiąga to to samo co powyżej:Pamiętaj, że rozróżnianie wielkości liter jest całkowicie niezależne od tego, czy
.
pliki i foldery są dopasowane. Możesz usunąćdotglob
z powyższych przykładów i nadal mogą one nie uwzględniać wielkości liter.Aby określić katalog zamiast używać tylko bieżącego katalogu, umieść jego nazwę i a
/
przed**/*.cr2
glob. Na przykład zastąpienieshotwell
powyższego polecenia tym poleceniem spowoduje otwarcie wszystkich.cr2
plików wPictures
podkatalogu katalogu domowego:W przeciwieństwie do pierwszego polecenia, które korzysta z bieżącego katalogu, bez względu na to, gdzie uruchomisz to polecenie, będziesz kazał Shotwell otworzyć te same pliki.
Testowanie
Jeśli naprawdę musisz do tego użyć terminala, to zgaduję, że może być częścią czegoś bardziej złożonego. Jeśli chcesz, możesz przetestować takie polecenia przed ich uruchomieniem, zastępując
shotwell
jeprintf '%s\n'
. Zamiast przekazywać nazwy plików do Shotwell, która wyświetla je po jednym w wierszu. Na przykład na moim komputerze:Wyłączanie Globstar i innych opcji powłoki
Włączono opcję powłoki globstar, tak jak zrobiła to
shopt -s globstar
komenda (powyżej). Jeśli jest już włączony, nie potrzebujesz wielu poleceń. I wystarczy ustawić globstar tylko raz na instancję powłoki.Możesz wyłączyć globstar, uruchamiając:
Możesz sprawdzić, czy globstar jest włączony, czy wyłączony, uruchamiając:
Jeśli używasz globstar w skrypcie, powinieneś rozważyć jego wyłączenie, jeśli może pojawić się kod w tym samym skrypcie, który nie został napisany z myślą o globstar. Na przykład pisanie,
**
gdy masz na myśli,*
zwykle nie jest problemem, gdy globstar jest wyłączony, ale przy włączonej globstar może powodować poważne problemy, powodując, że polecenie wpływa na znacznie więcej plików niż ktoś zamierzał.Podobnie, jeśli użyłeś dotglob lub nocaseglob i chcesz je również wyłączyć, możesz to zrobić odpowiednio za pomocą
shopt -u dotglob
ishopt -u nocaseglob
. Możesz także przekazać wiele opcji powłoki,shopt -u
aby je rozbroić w tym samym czasie. Na przykład, aby wyłączyćglobstar,
dotglob
inocaseglob
:W porównaniu do globstar, możesz popełnić mniej poważnych błędów, ponieważ zapomniałeś, że zostawiłeś dotglob lub nocaseglob włączony. Ale inne osoby (w tym osoby, z którymi konsultujesz w witrynach takich jak Ask Ubuntu) zwykle zakładają, że dotglob i nocaseglob są wyłączone, gdy sugerują polecenia do użycia, chyba że powiesz im inaczej.
Aby uzyskać więcej informacji na temat tych opcji powłoki związanych z globem (a także ogólnie globs ), zobacz instrukcję obsługi bash . Wszystkie są omówione przede wszystkim w 4.3.2 Wbudowany Shopt . W przypadku globstar patrz także 3.5.8.1 Dopasowywanie wzorców . Dotglob, patrz także 3.5.8 Rozszerzenie nazwy pliku .
Budowanie nowego drzewa katalogów
Ponieważ w twoim przypadku naprawdę potrzebujesz Shotwell do wyświetlania tylko
.cr2
plików, nie masz.cr2
plików w tych samych folderach z.cr2
plikami, a przeglądanie obrazów w Shotwell automatycznie oferuje te pliki , wygląda na to, że będziesz musiał mieć folder, który nie zawiera innych plików graficznych niż.cr2
pliki, które próbujesz otworzyć.Przenoszenie plików, jak zasugerowałeś , jest jednym podejściem, ale zamiast tego zalecam albo skopiowanie plików, albo, lepiej, tworzenie dowiązań symbolicznych do plików (patrz także FOLDOC ), ponieważ:
Ty też musisz podjąć inną decyzję. Czy tworzysz wszystkie nowe wpisy (kopie lub dowiązania symboliczne) w tym samym katalogu, spłaszczając hierarchię plików? Czy tworzysz katalogi w miejscu docelowym odpowiadającym każdemu z katalogów w źródle, które zawierają co najmniej jeden
.cr2
plik?Spłaszczanie hierarchii plików pozwala łatwo zobaczyć wszystkie pliki jednocześnie. W szczególności łatwo jest zobaczyć nazwy i rozmiary plików jednocześnie, a także wybrać dowolną kombinację plików w graficznej przeglądarce plików.
Ale traci także informacje o tym, w których folderach się znajdowały, co może być cenne (chociaż możesz wrócić do oryginalnego folderu i poszukać go tam, jeśli nie przeniesiesz plików).
Większy problem ze spłaszczeniem hierarchii plików polega jednak na tym, że w różnych miejscach znajdują się dwa lub więcej plików o tej samej nazwie . Jeśli spłaszczysz hierarchię plików, w zależności od tego, jak to zrobisz, kopiowanie (lub łączenie) wszystkich z wyjątkiem pierwszego nie powiedzie się i pojawi się błąd lub ostrzeżenie, albo wszystkie oprócz ostatniej kopii (lub linku) zostać nadpisanym .
To kolejny powód, dla którego zalecamy kopiowanie lub tworzenie dowiązań symbolicznych zamiast przenoszenia plików. Jeśli „z powodzeniem” przeniesiesz wiele plików do tego samego pliku, stracisz wszystkie oprócz ostatniego!
Ze względu na wady polegające na spłaszczeniu wszystkiego do jednego katalogu bez podkatalogów, podejścia, które tu podejmuję, budują nowe drzewo katalogów w miejscu docelowym.
Sposób 1: Kopiowanie
Pokazuję to jako pierwsze, ponieważ jest trochę prostsze, ale sugeruję, aby zamiast tego utworzyć dowiązania symboliczne („Way 2”), szczególnie jeśli na docelowym dysku może nie być wystarczającej ilości miejsca do przechowywania wszystkich plików. „Droga 2”, która jest nieco bardziej skomplikowana, jest o wiele bardziej szczegółowa, ponieważ wydaje się, że jest mniej zasobów na temat korzystania z tej techniki, jest to sposób, w jaki oczekuję, że większość osób w tej sytuacji będzie wolała, i informacje, które dotyczą obu metod - podstawowa rada na temat ucieczki przestrzeni na ścieżkach - jest tam raczej niż tutaj.
Kiedy musisz skopiować drzewo katalogów i dostosować operację kopiowania, zwykle powinieneś użyć
rsync
zamiastcp
. To jest jeden z tych przypadków.Zastępując
src
ścieżkę do katalogu najwyższego poziomu zawierającego wszystkie pliki CR2 i zastępującdest
nazwą katalogu, który chcesz utworzyć, który będzie zawierał hierarchię dowiązań symbolicznych do plików CR2, uruchom:Nie zapomnij o
/
nazwie katalogu źródłowego, chyba że chcesz utworzyć w nim dodatkowy katalog najwyższego poziomudest
. Oznacza to, że jeśli pominiesz końcowy/
,rsync
spowoduje to utworzenie katalogu docelowego dla Ciebiedest
. Załóżmy na przykład, żesrc
ścieżka względna nie zawiera/
. Następnie:src/
wrsync
poleceniu dostaniesz dowiązaniadest/foo/bar.cr2
do plikusrc/foo/bar.cr2
.src
wrsync
poleceniu dostaniesz dowiązania do pliku .dest/src/foo/bar.cr2
src/foo/bar.cr2
Ponieważ może to być mylące dla katalogu najwyższego poziomu, w którym umieszczane będą dowiązania symboliczne, aby mieć taką samą nazwę jak nazwa katalogu najwyższego poziomu zawierającego
.cr2
pliki, które będą wskazywać dowiązania symboliczne, zalecam umieszczenie/
na końcu miejsca docelowego nazwa katalogu w twoimrsync
poleceniu. (I, dla katalogu źródłowego, daj mu katalog, który jest pusty, nie istnieje lub jest w inny sposób przeznaczony do tego celu. W przeciwnym razie będziesz zaśmiecać jakiś inny folder.)Jak to zwykle w przypadku, gdy przekazać nazwę pliku lub katalogu do programu wiersza polecenia lub skryptu, jeśli docelowe lub źródłowe ścieżki katalogów zawierać żadnych spacji puste (lub znaki traktowane specjalnie przez powłokę, jak
\
,$
,'
i różne inne znaki interpunkcyjne), będziesz musiał je zacytować . Szczegółowo opisałem, jak to zrobić, w najczęstszym przypadku spacji, w „Drodze 2” - tutaj również znajdują się porady dotyczące cytowania w tej sekcji. Jeśli jednak nie jesteś pewien, jak podać nazwę folderu, możesz poprosić Ubuntu, aby zrobił to za Ciebie, po prostu przeciągając folder do Temrminal; jego pełna ścieżka zostanie wklejona z poprawnym cytatem .Po skopiowaniu tylko
.cr2
plików i folderów, które je zawierają, możesz otworzyć folder docelowy w Shotwell. (Patrz „Otwieranie folderu obrazów (w tym podfolderów) w Shotwell” powyżej). Jednak przed uruchomieniemrsync
zalecam zdecydowanie, czy chcesz pominąć wpisy rozpoczynające się od.
i czy chcesz dołączyć wpisy z sufiksami wariantów. Jeśli tak, musisz uruchomić nieco innersync
polecenie.Dostosowywanie obsługi kropkowanych wpisów i rozróżnianie wielkości liter
Możesz użyć innego
rsync
polecenia, aby zmienić, czy pliki i katalogi zaczynające się od kropki są pomijane i czy chcesz, aby rozróżnianie wielkości liter w dopasowaniu do sufiksu było czy nie.cr2
.Powyższa komenda robi to katalogi i pliki, których nazwy zaczynają się
.
. Aby wykluczyć takie pliki i katalogi, umieszczone--exclude='.*/' --exclude='.*'
przed wszystkimi innymi--include
s i--exclude
s. Oznacza to, żersync
zamiast tego użyj tego polecenia (z odpowiednimi podstawieniami dlasrc
idest
, oczywiście):Te
rsync
polecenia pokazane zostały dotąd wielkość liter i nie skopiuje pliki, które kończą się.CR2
,.Cr2
czy.cR2
zamiast.cr2
. Jeśli chcesz skopiować takie pliki, musisz to uwzględnić przy użyciu--include
wzorca*.[cC][rR]2
zamiast*.cr2
.To trzecie polecenie nie rozróżnia wielkości liter i (podobnie jak pierwsze polecenie) nie pomija plików i katalogów, których nazwy zaczynają się od
.
:Jeśli podejmiesz podejście do kopiowania plików
rsync
i nie masz pewności, które z tych poleceń chcesz, sugeruję użycie tego, jeśli chcesz się upewnić, że niczego nie umknie. Należy jednak pamiętać, że pliki dot mogą zawierać metadane, a pliki o nazwach podobnych do obrazów mogą nie być tak naprawdę obrazami. Zobacz dyskusje na temat plików dotfile w sekcji „Uruchamianie Shotwell z listą nazw plików graficznych” powyżej, a także na temat plików kropkowych i rozróżniania wielkości liter w „Way 2” poniżej.Ten czwarty komenda jest wielkość liter i (podobnie jak drugiego polecenia) nie pominąć pliki i katalogi, których nazwy zaczynają się od
.
:Sposób 2: Tworzenie dowiązań symbolicznych
Właśnie to zalecam, ale Way 1 jest w porządku, jeśli masz wystarczająco dużo miejsca na dysku docelowym. Nie musisz czytać sposobu 1, aby z tego skorzystać.
Przedstawiona tutaj metoda tworzy listę
.cr2
plików i pętli, tworząc katalogi docelowe zgodnie z potrzebami i wypełniając je symbolicznymi linkami do każdego.cr2
pliku.Jest to na tyle skomplikowane, że sugeruję umieszczenie go w skrypcie zamiast wpisywania go interaktywnie. Możesz umieścić skrypt w dowolnym miejscu, ale dla wygody pokażę, jak to zrobić ze skryptem umieszczonym bezpośrednio w folderze domowym.
Napisz (lub wklej) skrypt.
Utwórz plik tekstowy
make-symlinks
w folderze domowym. Rozszerzenie pliku nie jest potrzebne.Możesz to zrobić w dowolnym edytorze tekstu, takim jak Vim, Nano, Gedit lub Leafpad. Jednak nie używaj edytora tekstu, takiego jak LibreOffice Writer. (Możesz to nawet zrobić, uruchamiając
cat > ~/make-symlinks
, wklejając zawartość pliku i naciskając Ctrl+ Dw nowym wierszu, jeśli chcesz).Jeśli nazywasz skrypt innym niż
make-symlinks
, upewnij się, że użyjesz go podczas uruchamiania poleceń korzystających ze skryptu później.Umieść to w pliku i zapisz plik. Skrypt ten wykorzystuje globstar, funkcję Bash wyjaśnioną powyżej w „Uruchamianie Shotwell z listą nazw plików obrazów” .
Możesz zmienić sposób, w jaki obsługuje on kropkowane wpisy i rozróżnia wielkość liter.
W zależności od potrzeb możesz wprowadzić pewne zmiany:
Jeśli nie chcesz dołączać
.cr2
plików, których nazwy zaczynają się od.
lub które znajdują się w katalogach, których nazwy zaczynają się od.
, usuńdotglob
zshopt
wiersza.Pliki i katalogi, których nazwa zaczyna się od,
.
są często używane do metadanych (patrz sekcja „Uruchamianie Shotwell z listą nazw plików obrazów” powyżej). Z drugiej strony, jeśli chcesz mieć pewność, że masz wszystko, lub jeśli czegoś brakuje w niewytłumaczalny sposób, co do którego masz pewność, że tam jest, powinieneś to zachowaćdotglob
.Jeśli chcesz dołączyć tylko pliki, które kończą się dokładnie
.cr2
ale nie wariantach sprawy (.CR2
,.Cr2
, i.cR2
), a następnie należy usunąćnocaseglob
. Ponieważ Twoja sytuacja wiąże się z odzyskiwaniem danych, a Shotwell nie pokaże żadnych plików, które przegapiłeś podczas otwierania katalogu dowiązań symbolicznych - w końcu o to chodzi w tej metodzie - prawdopodobnie będziesz chciał je zachowaćnocaseglob
.Zrób to.
Uruchom to polecenie, aby oznaczyć skrypt jako wykonywalny:
Uruchom go u źródła i przekaż miejsce docelowe jako argument.
Następnie zmień katalog na katalog źródłowy, tj. Folder najwyższego poziomu zawierający zdjęcia. Na przykład, jeśli znajdują się one w
Pictures
podkatalogu katalogu domowego, uruchomiłbyś:Tutaj uruchomisz skrypt. Przekaż katalog docelowy do skryptu jako argument wiersza polecenia.
Na przykład, jeśli chcesz, aby katalog wywoływany
cr2s
był tworzony na pulpicie i zawierał dowiązania symboliczne, uruchom:Lub jeśli chcesz tylko ten katalog bezpośrednio w folderze domowym:
Lub jeśli masz zamontowany dysk
/media/you/MyDrive
i chcesz utworzyć na nim folder o nazwielinks
zawierającej łącza symboliczne:Ale jeśli dysk jest
/media/you/My Drive
(ze spacją), musisz użyć cudzysłowu. Każda z tych prac (użyj tylko jednej, nie uruchamiaj ich wszystkich):Ale jeśli korzystasz
~
z katalogu domowego, nie cytuj tego:make-symlinks
tworzy katalog docelowy, jeśli jeszcze nie istnieje, tak jak tworzy w nim podkatalogi. Jednak nadal działa, jeśli miejsce docelowe już istnieje.Możesz nawet uruchomić go wiele razy i przekazać ten sam katalog docelowy (na przykład, jeśli przerwałeś go za pomocą Ctrl+ C), ale otrzymasz
failed to create symbolic link
błędy dla już istniejących dowiązań symbolicznych, co może być mylące.Prawdopodobnie nie chcesz przekazać nazwy katalogu, który już istnieje i zawiera niepowiązane pliki (takie jak katalog domowy)
make-symlinks
. Jeśli tak, możesz oczekiwać, że utworzy się w nim cała masa dowiązań symbolicznych i podfolderów. Prawdopodobnie chcesz użyć nowego katalogu - lub takiego, który jeszcze nie istnieje - dlamake-symlinks
.Zaimportuj nowo utworzone drzewo dowiązań symbolicznych do Shotwell.
Po uruchomieniu
make-symlinks
zaimportuj katalog, który mu przekazałeś, do Shotwell, korzystając z jednej z metod podanych w pierwszej części tej odpowiedzi ( „Otwieranie folderu obrazów (w tym podfolderów) w Shotwell” ). Na przykład możesz otworzyć Shotwell i przeciągnąć folder do.Ponieważ wszystkie wpisy w folderze są symbolicznymi linkami do
.cr2
plików lub zawierających je katalogów, bez żadnych innych typów plików, Shotwell nie powinien widzieć żadnych innych plików.źródło
Shotwell będzie cyklicznie przeglądać wszystkie obrazy znalezione w każdym katalogu, w którym obraz jest otwarty, więc używanie
find -name '*.cr2' -exec shotwell '{}' +
zgodnie z pierwotną sugestią tak naprawdę nie pomaga. Ponieważ ustawienia Shotwell są raczej ograniczone, jedynym sposobem, w jaki mogę myśleć o otwieraniu tylko tych plików, które chcesz, jest samodzielne przeniesienie plików do nowego katalogu.Możesz użyć
find
do tego:Wymień
cp
sięmv
jeśli chcesz uniknąć tworzenia duplikatów plików.Uwagi:
mkdir ~/cr2files
stwórz nowy katalog w swoim katalogu domowymfind
szukaj rekurencyjnie od bieżącego katalogu w dół przez drzewo-type f
szukaj tylko plików-iname
wyszukaj pliki według nazwy, ignorując wielkość liter'*.cr2'
nazwy kończące się na.cr2
- użyj cudzysłowów, aby zatrzymać rozszerzanie globu przez powłokę, zanim zostanie ona przekazanafind
-not -path './dir/*'
wykluczy zawartość katalogudir
z wyników{}
reprezentuje ścieżki znalezionych plików--
pocp
to powiedzieć, abycp
nie akceptować dalszych opcji, co pozwala uniknąć nazw plików zaczynających się od-
powodowania problemówNastępnie możesz otworzyć dowolny plik w nowym katalogu za pomocą Shotwell i przeglądać je wszystkie
źródło
Opcja 1 - Używanie,
xargs
gdy nazwy plików zawierają spacjeJak wskazano poniżej, użycie
back ticks
(opcja 3 poniżej) zostanie przerwane, gdy nazwy plików będą zawierać spacje. Bezpieczniejsza metoda używaniafind
polecenia i przekazywania danych wyjściowych doshotwell
użyciaxargs
opcji wygląda następująco:-print0
Flaga mówi znaleźć w użyciu\0
(znak null) ograniczniki między nazwami, a-0
flaga mówixargs
się spodziewać tych\0
ograniczników.Podziękowania dla doskonałych odpowiedzi znalezionych tutaj ( jak potokować listę plików zwróconych przez komendę find ) na przepełnieniu stosu.
Opcja 2 - Używanie,
-exec
gdy nazwy plików zawierają spacjeJak zauważa poniższy komentarz,
-exec
opcja obsługuje również nazwy plików zawierające spacje. Inne poniższe komentarze wskazują, że przerwy te przekraczają liczbę plików. Wyglądałoby to tak:Opcja 3 - Gdy w nazwach plików nie ma spacji
W dawnych czasach, zanim nazwy plików miały spacje i stały się 256 znakami, ta opcja działała dobrze. Ta opcja znajduje się na wielu innych stronach internetowych, ale nie należy jej używać . Wcześniej użycie
find
polecenia i przekazanie danych wyjściowychshotwell
było najprostszą metodą:Zaczyna się
find
od bieżącego katalogu i obejmuje wszystkie podkatalogi:$(...)
bash..
podajefind
punkt początkowy, którym jest bieżący katalog. Możesz przekazać/home/$USER/Pictures
lub coś innego zamiast.
.-name
mówi find, aby szukał nazw plików (nie katalogów).shotwell
. czyli można go używać docat
,head
,tail
i większości innych popularnych komend Linux.źródło
xargs
i wykorzystywać-0
wszystkie nazwy plików użyć łańcuchem pustym jako separatora$(
)
składnię zastępowania poleceń od składni zastępowania polecenia wstecz, nie ma to związku z tym problemem - obaj zawodzą dokładnie w ten sam sposób. @Erg Sugeruję opublikowanie nowej odpowiedzi na temat tego, jak to zrobićxargs
. (Włączenie podstawienia"
"
również nie zadziałałoby: wszystkiefind
wyniki zostałyby przekazane jako pojedynczy argument.)xargs
opcję włączonąStack Overflow
podczas pisania tej odpowiedzi. Rozwijam się również z tą opcją. Niestety musiałem dziś rano uruchomić system Windows 8, aby naprawić uszkodzonąNTFS
partycję, więc testowanie było problematyczne. Zaktualizuję odpowiedź później. Dziękujemy za zwrócenie uwagi :)-exec
?-exec
opcję :)Nie wiedziałem, że shotwell nawet otworzył pliki RAW. Jestem pewien, że możesz uzyskać większy przebieg dzięki digikam lub darktable. Digikam jest wyposażony w niektóre komponenty Kde i jest całkiem dobrym menedżerem zdjęć. Darktable posiada bardzo dobre możliwości edycji nieniszczącej.
źródło
.cr2
plików w folderze? Jeśli tak, to może być cenne, ponieważ oryginalny plakat miał problemy z dostaniem Shotwell pokazać tylko te.cr2
pliki. Chociaż dodałem dodatkowe podejścia do mojej odpowiedzi, aby umożliwić korzystanie z Shotwell do przeglądania tylko tych plików i żadnych innych, raczej mocno podejrzewam, że Shotwell nie jest najlepszym narzędziem do tego.