Shotwell에서 폴더와 모든 하위 폴더에있는 모든 .cr2 파일을 열려면 어떤 명령 줄을 사용합니까?


9

같은 것

shotwell *.cr2 ./

그것은 작동하지 않지만 기본적으로 shotwell을 사용 .cr2하여 현재 디렉토리 (하위 폴더 포함)로 끝나는 모든 파일을 열고 싶습니다

컨텍스트는 메모리 카드에서 삭제 한 후 카메라로 찍은 사진이 누락 된 것입니다.

Shotwell의 "이미지 누락"에 미리보기 이미지가 있지만 찾을 수 없습니다. 그래서 나는 photorec그들을 찾아 내려고 달려 갔다고 생각 했다. 결과적으로 photorec은 폴더와 파일을 보트에 싣고 하드 드라이브를 가득 채웠습니다. 모든 파일을 하나씩 탐색하는 대신 하드 드라이브에서 .cr2 파일을 검색하기로 결정 Photogs했지만 photorec데이터 덤프의 일부가 아니기 때문에 파일이 없다는 특정 폴더는 피했습니다 .


@EliahKagan는 세부 사항에 대한 의견 (이 채팅에 계속!)를 참조하십시오 여기를 . 나는 확실히 여부를 어떻게 편집에 대한 질문, 그래서 제발 조언, 당신은 아름다운 대답 만든 주어지지하고
ZANNA

@ user285884 내 답변에 대한 가장 최근 편집 내용에는 .cr2 파일에 대한 심볼릭 링크 트리를 빌드하는 자세한 절차가 포함되어 있으며 Shotwell에서 열 수있는 다른 방법도 있습니다. 이것은 Shotwell에서 .cr2가 아닌 추가 파일을 보는 문제와 대상 장치에 파일을 이동하거나 복사 할 공간이 충분하지 않은 문제를 극복해야합니다. 아직 해결하지 못했다면 관련 채팅 에서 확실하지 않습니다 .
Eliah Kagan

답변:


6

일반적으로 Shotwell을 열고 폴더로 드래그하면됩니다.

필요한 경우 셸에서 CR2 파일 목록을 작성하고 Shotwell에 해당 파일 만 열도록 지시 할 수 있습니다. 때때로 그것은 당신이이 경우에 원하는,하지만 수 있습니다 당신이 필요로 아주 일을하지 않았다 에 거주하는 자동 (모든 종류의) 당신에게 다른 이미지 파일을 보여주는의 - 다른 상황에서 기능을 - Shotwell의 행동으로 인해 연 이미지와 같은 폴더.

Shotwell이 관심있는 이미지 만 알 수 있도록 디렉토리 트리를 다른 위치에 복제하여 .cr2파일과 파일이 들어있는 폴더 만 복사하고 다른 것은 복사 하지 않을 수 있습니다. 그러나 상당한 추가 공간을 차지할 수 있습니다. 따라서 또 다른 방법은 심볼릭 링크 의 계층 구조를 구성하는 것입니다. 원본 파일 새 디렉토리 트리를 갖는 대신 새 디렉토리 트리가있는 심볼릭 링크 있습니다. 이것은 훨씬 적은 공간을 차지합니다..cr2

이 답변은 모든 접근 방식을 다룹니다.

Shotwell에서 이미지 폴더 (하위 폴더 포함) 열기

Shotwell 자체는 전체 디렉토리 트리 사진을 여는 두 가지 방법을 제공합니다. 이것들이 당신에게 도움이된다면, 명령 줄에서 영리한 일을하거나 전혀 사용하지 않아도됩니다. 그렇지 않은 경우 다른 기술과 관련하여이 작업을 수행 할 수 있습니다. 예를 들어, 심볼릭 링크 또는 .cr2파일 사본의 새 디렉토리를 만들면 다음 방법 중 하나를 사용 하여 파일을 열 수 있습니다.

방법 1 : Shotwell에서 전체 폴더를 엽니 다.

Shotwell의 파일 메뉴 에서 폴더에서 가져 오기를 클릭하십시오 . 그런 다음 이미지를 가져올 폴더를 선택하십시오. .cr2파일 에만 국한되지는 않지만 .cr2디지털 카메라에서 만든 이미지가 포함 된 여러 하위 폴더에서 파일을 여는 경우 파일이 유일한 파일 일 것입니다.

Shotwell의 파일 메뉴에있는 폴더에서 가져 오기 메뉴 항목의 스크린 샷

자세한 내용은 모든 사진을 재귀 적 으로 표시 (하위 폴더 포함)하는 Jakob의 답변 을 참조하십시오.

방법 2 : 폴더를 Shotwell으로 드래그하십시오.

대부분의 데스크탑 환경 및 파일 브라우저에서 Shotwell을 열고 이미지가 포함 된 폴더를 Shotwell 창으로 드래그 할 수도 있습니다. 폴더 에서 가져 오기 와 같이 Shotwell에서 사진을 열도록 권장하는 또 다른 방법입니다.

포함 된 이미지를 가져 오기 위해 Desktop 폴더를 Shotwell로 드래그하는 스크린 샷입니다.

파일 브라우저 창이나 데스크탑에서 Shotwell으로 드래그하면 특정 라이브러리로 드래그 할 수 있습니다. 또는 여러 라이브러리를 설정하지 않은 경우 기본적으로 아무 곳이나 드래그하면 작동합니다. (왼쪽 창으로 드래그 할 필요도 없습니다.)

이 방법은 매우 편리하며 폴더를 수동으로 선택하는 것만 큼 강력합니다 ( 위에서 설명한대로 파일 > 폴더 에서 가져 오기 사용 ). 이러한 방법 중 하나를 사용하여 파일이나 폴더를 열면 Shotwell은 사진을 라이브러리에 복사하지 않고 열 수있는 옵션을 제공합니다.

Shotwell 대화 상자의 스크린 샷은 사용자에게 이미지를 Shotwell 라이브러리의 위치로 복사하거나 복사하지 않고 제자리로 가져 오도록 선택할 수 있습니다.

복사하지 않고 가져 오려면 사진 복사 대신 가져 오기를 클릭하십시오 .


이미지 파일 이름 목록으로 Shotwell 시작

어떤 이유로 터미널에서 명령을 실행하여이 작업을 원하거나 수행해야하는 경우 명령을 실행하고 shotwell각 이미지의 파일 이름을 인수로 전달할 수 있습니다 . Globstar를 사용하면 다음이 쉬워집니다.

shopt -s globstar
shotwell **/*.cr2

.cr2현재 디렉토리 어딘가에 위치한 파일 이 열립니다 . Shotwell은 이름을 지정한 파일 만 가져 오려고한다는 점에서 Shotwell을 실행 한 다음 폴더를 끌어 오는 것과 다릅니다. 그러나 Shotwell은 종종 파일 열기와 동일한 폴더에있는 다른 이미지 파일을 표시하므로 필요에 맞지 않을 수 있습니다. ( 문제에 대해 제공 한 추가 정보는 문제가 아니라는 것을 나타 냅니다. 다른 방법은 아래를 참조하십시오.)

파일 또는 이름이 시작하는 하위 폴더가 포함되어 있지 않습니다. . 그러나 이름이 점으로 시작하는 CR2 파일이 있으면 대부분 Shotwell에서 파일을 열지 않을 것 입니다. 이러한 방식으로 의도적으로 파일이나 폴더의 이름을 지정하지 않은 경우 이미지 또는 문서 파일 이름 확장자를 가진 도트 파일은 실제 이미지 나 문서가 아닌 메타 데이터 파일 일 가능성이 높습니다. 예를 들어, macOS는 외부 미디어 (플래시 드라이브 및 디지털 카메라 포함)에 접근 할 때 종종 이러한 파일을 추가합니다 (예 : ._kittens.cr2실제 사진 kittens.cr2).

이름이로 시작 .하거나 이름이로 시작하는 폴더에있는 파일을 찾으. 려면 dotglob도 활성화하십시오. 당신은이 작업을 수행 할 수 있습니다 shopt -s dotglob또는 둘 모두를 전달하여 globstar하고 dotglob받는 shopt내장 :

shopt -s globstar dotglob

기본적으로 글롭은 대소 문자를 구분합니다. 하지만 당신은 할 수 있습니다 경우 소문자를 구별 파일 이름과 일치하기 때문에 끝나는 열려있는 파일에 관해서는, .cr2, .Cr2, .cR2,와 .CR2. 그렇게하려면 :

  • 단독으로 또는 다른 쉘 옵션 으로 실행 shopt -s하여 nocaseglob를 활성화하십시오 nocaseglob. 예를 들어, 대소 문자를 구분하지 않고 검색하고 -files 및 파일을 -directories에 포함하여 shotwell모든 .cr2파일에서 실행하려면 다음을 수행 .하십시오 ..

    shopt -s globstar dotglob nocaseglob
    shotwell **/*.cr2
    
  • 또는 글로브 패턴 자체 .[cC][rR]2대신에 사용 .cr2하십시오. 예를 들어, 위와 동일하게 수행됩니다.

    shopt -s globstar dotglob
    shotwell **/*.[cC][rR]2
    

    대소 문자 구분은 .파일과 폴더의 일치 여부와는 완전히 다릅니다. dotglob위 예제에서 제거해 도 대소 문자를 구분하지 않을 수 있습니다.

현재 디렉토리를 사용하지 않고 디렉토리를 지정하려면 이름 /앞에 **/*.cr2글로브를 붙여야합니다. 예를 들어, shotwell위 명령을이 명령으로 바꾸면 홈 디렉토리 .cr2Pictures하위 디렉토리에 있는 모든 파일 이 열립니다 .

shotwell ~/Pictures/**/*.cr2

현재 디렉토리를 사용하는 첫 번째 명령과 달리 해당 명령을 어디에서 실행하든 Shotwell에게 동일한 파일을 열도록 지시합니다.

테스팅

실제로 터미널을 사용해야하는 경우 터미널이 더 복잡한 것일 수 있습니다. 원하는 경우로 대체 shotwell하여 실제로 실행하기 전에 해당 명령을 테스트 할 수 있습니다 printf '%s\n'. 파일 이름을 Shotwell에 전달하는 대신 줄당 하나씩 나열합니다. 예를 들어, 내 컴퓨터에서 :

ek@Io:~$ printf '%s\n' ~/tmp/**/*.cr2
/home/ek/tmp/another image.cr2
/home/ek/tmp/image.cr2
/home/ek/tmp/some folder/image3.cr2

Globstar 및 기타 셸 옵션 끄기

globstar 쉘 옵션이 작동하도록 설정되었습니다 (이것은 shopt -s globstar위 의 명령). 이미 활성화되어 있으면 여러 명령이 필요하지 않습니다. 그리고 쉘 인스턴스 당 globstar를 한 번만 설정하면됩니다.

다음을 실행하여 globstar를 다시 끌 수 있습니다.

shopt -u globstar

다음 을 실행하여 globstar가 켜져 있는지 여부 를 확인할 수 있습니다 .

shopt globstar

스크립트에서 globstar를 사용하는 경우 globstar를 염두에두고 작성되지 않은 동일한 스크립트에 이후에 오는 코드가있을 경우 다시 끄는 것을 고려해야합니다. 예를 들어, globstar가 비활성화되어있는 경우 일반적으로 **의미 *가없는 쓰기 는 문제가되지 않지만 globstar가 켜져 있으면 명령이 의도 한 것보다 훨씬 많은 파일에 영향을 미치게함으로써 심각한 문제가 발생할 수 있습니다.

마찬가지로, dotglob 또는 nocaseglob를 사용하고 너무 끌 경우, shopt -u dotglobshopt -u nocaseglob로 각각 그렇게 할 수 있습니다 . 여러 쉘 옵션을 전달 shopt -u하여 동시에 설정을 해제 할 수도 있습니다 . 예를 들어, 끕니다 globstar, dotglobnocaseglob:

shopt -u globstar dotglob nocaseglob

globstar와 비교할 때, dotglob 또는 nocaseglob를 남겨둔 것을 잊었 기 때문에 발생할 수있는 심각한 실수가 적습니다. 그러나 Ask Ubuntu와 같은 사이트에서 상담하는 사람들을 포함한 다른 사람들은 일반적으로 dotglob과 nocaseglob가 달리 지시하지 않는 한 사용하라는 명령을 제안 할 때 비활성화되어 있다고 가정합니다.

이러한 glob 관련 쉘 옵션 (및 일반적인 glob)에 대한 자세한 정보bash 참조 매뉴얼을 참조 하십시오 . 이것들은 모두 4.3.2 The Shopt Builtin 에서 다루고 있습니다. globstar에 대해서는 3.5.8.1 패턴 일치를 참조하십시오 . dotglob의 경우 3.5.8 파일 이름 확장을 참조하십시오 .


새로운 디렉토리 트리 만들기

귀하의 경우 파일 표시하려면 실제로 Shotwell이 필요 하고 파일 과 동일한 폴더에 파일 이 아닌 것이 있으며 Shotwell의 이미지 탐색은 자동으로 해당 파일도 제공 .cr2.cr2.cr2 하므로 폴더가 있어야합니다. .cr2열려고하는 파일 이외의 다른 이미지 파일이 없습니다 .

제안한대로 파일을 이동하는 것이 한 가지 방법이지만 파일을 복사 하거나 파일에 대한 심볼릭 링크 를 만드는 것이 좋습니다 ( FOLDOC 참조 ).

  • 여러 장치에서 파일을 이동하는 경우 어쨌든 복사가 필요하므로 이동 속도가 빠릅니다.
  • 공간이 있다면 필요에 따라 수행 한 작업이 올바른 것으로 만족할 때까지 시작한 모든 항목의 수정되지 않은 폴더를 유지하는 것이 좋습니다. 분명히 이것이 항상 적용 가능하거나 실용적이지는 않습니다. 그러나 귀하의 경우 이러한 파일은 데이터 복구 작업의 결과입니다. 복구 된 내용과 위치를 쉽게 설명하는 기록을 유지하는 것이 유용 할 수 있습니다.
  • 심볼릭 링크를 만들도록 선택하면 추가로 소비되는 공간이 매우 적습니다 . (대상 디스크가 완전히 가득 찬 경우에도 심볼릭 링크를 만들려면 디스크의 공간을 확보하거나 다른 대상 디스크를 사용해야합니다.)

당신이 결정할 또 다른 결정이 있습니다. 파일 계층 구조를 병합 하여 동일한 디렉토리에 모든 새 항목 (복사본 또는 심볼릭 링크이든)을 작성 합니까? 또는 하나 이상의 .cr2파일 을 포함하는 소스의 각 디렉토리에 해당하는 대상에 디렉토리를 작성 합니까?

  • 파일 계층 구조를 병합하면 모든 파일을 한 번에 쉽게 볼 수 있습니다. 특히 파일 이름과 크기를 한 번에 쉽게 볼 수있을뿐만 아니라 그래픽 파일 브라우저에서 파일 조합을 선택할 수 있습니다.

  • 그러나 어떤 폴더에 있는지에 대한 정보를 잃어 버릴 수 있습니다.하지만 원래 폴더로 돌아가서 파일을 이동하지 않으면 찾을 수 있습니다.

  • 그러나 파일 계층 구조를 병합하는 데 더 큰 문제 는 다른 위치에 같은 이름의 파일두 개 이상 있는 경우에 발생합니다 . 파일 계층 구조를 병합하면 수행 방식에 따라 첫 번째를 제외한 모든 것이 복사 (또는 연결)되지 않고 오류나 경고가 표시되거나 마지막 복사본 (또는 링크)을 제외한 모든 것이 표시됩니다. 일 을 덮어 씁니다 .

    파일을 옮기는 대신 복사하거나 심볼릭 링크를 만드는 것이 좋습니다. 여러 파일을 동일한 파일로 "성공적으로"이동하면 마지막 파일을 제외한 모든 파일이 손실됩니다!

서브 디렉토리없이 모든 것을 단일 디렉토리로 병합하는 단점으로 인해 여기서 취한 접근법 은 대상에서 새 디렉토리 트리빌드 합니다.

방법 1 : 복사

조금 더 간단하기 때문에이 정보를 먼저 보여 주지만, 대상 드라이브에 모든 파일을 저장할 공간이 충분하지 않은 경우 기호 링크 ( "Way 2")를 대신 작성하는 것이 좋습니다. 조금 더 복잡한 "Way 2"는이 기술을 사용하는 방법에 대한 리소스가 적기 때문에 훨씬 더 상세합니다.이 상황에서 대부분의 사람들이 선호하는 방식과 두 방법 모두에 적용되는 정보입니다 경로에서 공백을 이스케이프하는 것에 대한 기본 조언은 여기가 아니라 여기에 제공됩니다.

디렉토리 트리를 복사해야하고 복사 작업을 사용자 정의해야하는 경우 일반적으로 rsync대신을 사용해야 합니다 cp. 이것은 그러한 경우 중 하나입니다.

교체 src모든 CR2 파일을 포함하는 최상위 디렉토리에 대한 경로로, 및 교체 dest당신이 실행 CR2 파일에 대한 기호 링크의 계층 구조를 포함하는 것를 만들 디렉토리의 이름으로 :

rsync -rl --prune-empty-dirs --include='*/' --include='*.cr2' --exclude='*' src/ dest

추가 최상위 레벨 디렉토리를 내부에 작성하지 않으려면/ 소스 디렉토리 이름 뒤를 잊지 마십시오 . 당신이 후행를 생략하는 경우 즉, 다음, 내부, 당신을위한 대상 디렉토리를 만들 것입니다 . 예를 들어, no를 포함하는 상대 경로 라고 가정하십시오 . 그때:dest/rsyncdestsrc/

  • 으로 src/당신의 rsync명령, 당신은 심볼릭 링크 얻을 dest/foo/bar.cr2파일에 대한을 src/foo/bar.cr2.
  • 으로 src당신의 rsync명령, 당신은 심볼릭 링크 얻을 파일에 대한을 .dest/src/foo/bar.cr2src/foo/bar.cr2

.cr2심볼릭 링크가 가리키는 파일을 포함하는 최상위 디렉토리의 이름과 동일한 이름을 갖도록 심볼릭 링크를 배치 할 최상위 디렉토리에 대해서는 혼동 될 수 /있으므로 대상의 끝에 포함하는 것이 좋습니다. rsync명령에 디렉토리 이름 . 또한 소스 디렉토리의 경우 비어 있거나 존재하지 않거나이 용도로 전용 인 디렉토리를 지정하십시오. 그렇지 않으면 다른 폴더가 복잡해집니다.

당신이 명령 줄 프로그램이나 스크립트 파일이나 디렉토리의 이름을 통과 할 때 일반적으로의 경우와 마찬가지로, 대상 또는 소스 디렉토리 경로는 쉘 등으로 특수 처리 빈 공간 (또는 문자가 포함 된 경우 \, $, ', 각종을 다른 구두점) 을 인용 한 경우 인용해야합니다 . 가장 일반적인 공백의 경우 "Way 2"에서이 작업을 수행하는 방법에 대해 자세히 설명했습니다. 해당 섹션의 인용에 대한 조언도 여기에 적용됩니다. 그러나 폴더 이름을 인용하는 방법을 잘 모르는 경우 폴더를 Temrminal로 드래그하여 우분투에서 자동으로 폴더를 만들 수 있습니다. 그것의 전체 경로는 올바른 인용으로 붙여 넣습니다 .

.cr2파일과 파일이 들어있는 폴더 만 복사 한 후 Shotwell에서 대상 폴더를 열 수 있습니다. (참조 "Shotwell의 이미지의 폴더 (포함하여 하위 폴더) 열기" 이상은.) 그러나, 실행하기 전에 rsync, 나는 희망이 시작 항목을 건너 뛸 여부를 결정하는 것이 좋습니다 .당신은 대소 문자를 변형 접미사 항목을 포함 할 경우입니다. 그렇다면 약간 다른 rsync명령 을 실행해야합니다 .

점으로 구분 된 항목 및 대소 문자 구분 처리 사용자 지정

rsync점으로 시작하는 파일과 디렉토리를 건너 뛸지 여부와 접미사를 일치시킬 때 대소 문자 구분을 원하는지 여부를 변경 하기 위해 다른 명령 을 사용할 수 있습니다 .cr2.

위의 명령 에는 이름이로 시작하는 디렉토리 및 파일 포함됩니다 .. 이러한 파일 및 디렉토리를 제외하려면 --exclude='.*/' --exclude='.*'다른 모든 --includes 및 --excludes 앞에 두십시오 . 즉, rsync대신 이 명령을 사용하십시오 (src 하고 dest, 물론) :

rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.cr2' --exclude='*' src/ dest

rsync지금까지 대소 문자를 구분되었습니다 표시 명령 및 복사하지 않습니다 파일 점에서 끝 .CR2,.Cr2 또는 .cR2보다는 .cr2. 이러한 파일을 복사하려면 대신 --include패턴 을 사용하여 해당 파일을 처리해야합니다 .*.[cC][rR]2*.cr2

이 세 번째 명령은 대소 문자를 구분하지 않습니다 하지 않으며 첫 번째 명령과 같이 이름이 다음으로 시작하는 파일 및 디렉토리를 건너 뛰지 않습니다. .

rsync -rl --prune-empty-dirs --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest

파일을 복사하는 방법을 사용하는 경우 rsync 하고 어떤 명령을 원하는지 확실하지 않은 경우 아무것도 놓치지 않으려면 해당 명령을 사용하는 것이 좋습니다 . 그러나 도트 파일에는 메타 데이터가 포함될 수 있으며 이미지와 같은 이름의 도트 파일은 실제로 이미지가 아닐 수 있습니다. 에서 dotfiles에 대한 논의를 참조하십시오 "이미지 파일 이름의 목록을 시작 Shotwell" 위의 섹션을하고 dotfiles과 대소 문자 구분에 아래의 "방법 2"입니다.

이 네 번째 명령은 대소 문자를 구분하지 않으며 (두 번째 명령과 같이) 수행 스킵 파일과 이름이로 시작하는 디렉토리를 .:

rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest

방법 2 : 심볼릭 링크 만들기

대상 드라이브에 충분한 공간이 있으면 방법 1이 괜찮지 만 이것이 내가 권장하는 것입니다. 이것을 사용하기 위해 방법 1을 읽을 필요는 없습니다.

여기에 제시된 방법은 .cr2 파일 목록을 작성하고 목록을 반복하여 필요에 따라 대상 디렉토리를 작성하고 각 .cr2파일에 대한 기호 링크로 채 웁니다 .

이것은 대화식으로 입력하는 대신 스크립트에 넣는 것이 좋습니다. 스크립트를 원하는 곳에 배치 할 수 있지만 편의상 홈 폴더에 직접 배치 한 스크립트를 사용하여 스크립트를 작성하는 방법을 보여 드리겠습니다.

스크립트를 쓰거나 붙여 넣습니다.

make-symlinks홈 폴더에 텍스트 파일을 작성하십시오 . 파일 확장자가 필요하지 않습니다.

Vim, Nano, Gedit 또는 Leafpad와 같은 텍스트 편집기를 사용하여이 작업을 수행 할 수 있습니다. 그러나 LibreOffice Writer와 같은 워드 프로세서를 사용하지 마십시오. (을 실행 cat > ~/make-symlinks하고 파일의 내용을 붙여 넣고 원하는 경우 새 줄에서 Ctrl+ D를 눌러 파일을 만들 수도 있습니다.)

이외의 스크립트 이름을 지정하는 경우 make-symlinks나중에 스크립트를 사용하는 명령을 실행할 때 해당 이름을 사용해야합니다.

#!/bin/bash

shopt -s globstar dotglob nocaseglob

for f in **/*.cr2; do
    mkdir -p "$1/$(dirname "$f")"
    ln -s "$PWD/$f" "$1/$f"
done

파일에 넣고 파일을 저장하십시오. 이 스크립트는 "이미지 파일 이름 목록으로 Shotwell 시작" 에서 설명한 Bash 기능인 globstar를 사용합니다 .

점으로 구분 된 항목 및 대소 문자 구분을 처리하는 방법을 변경할 수 있습니다.

필요에 따라 몇 가지 사항을 변경할 수 있습니다.

  • .cr2이름이 시작 .하거나 이름이로 시작하는 디렉토리에 상주하는 파일 을 포함하지 않으려면 행 에서 .제거하십시오 .dotglobshopt

    이름이 시작하는 파일 및 디렉토리 .는 종종 메타 데이터에 사용됩니다 (위의 "이미지 파일 이름 목록으로 Shotwell 시작" 섹션 참조). 다른 한편으로, 당신이 모든 것을 가지고 있는지, 또는 당신이 확실히 확신하고있는 것이 명백히 누락 된 것이 있다면, 유지해야합니다 dotglob.

  • 포함 할 경우에만 정확히에서이를 파일 .cr2하지 경우 변종 ( .CR2, .Cr2, 및 .cR2), 당신은 제거해야합니다 nocaseglob. 상황에 따라 데이터를 복구해야하므로 Shotwell은 심볼릭 링크의 디렉토리를 열 때 놓친 파일을 보여주지 않습니다 . 결국이 방법의 요점입니다 nocaseglob.

실행 가능하게 만드십시오.

이 명령을 실행하여 스크립트 실행 파일을 표시하십시오.

chmod +x ~/make-symlinks

소스에서 실행하고 대상으로 인수로 전달하십시오.

그런 다음 디렉토리를 소스 디렉토리, 즉 그림이 포함 된 최상위 폴더로 변경하십시오. 예를 들어, Pictures홈 디렉토리 의 서브 디렉토리에있는 경우 다음을 실행하십시오.

cd ~/Pictures

여기에서 스크립트를 실행할 것입니다. 대상 디렉토리를 스크립트에 명령 행 인수로 전달하십시오.

예를 들어 cr2s데스크탑에 심볼릭 링크를 포함하도록 디렉토리 를 만들려면 다음을 실행하십시오.

~/make-symlinks ~/Desktop/cr2s

또는 홈 폴더에서 해당 디렉토리를 직접 원할 경우 :

~/make-symlinks ~/cr2s

또는 드라이브가 마운트 되어 있고 기호 링크를 포함하도록 /media/you/MyDrive호출 된 폴더를 작성하려는 경우 links:

~/make-symlinks /media/you/MyDrive/links

그러나 드라이브 /media/you/My Drive에 공백이 있으면 인용 부호를 사용해야합니다. 이러한 작업 중 하나 (단 하나만 사용하고 모두 실행하지는 마십시오) :

~/make-symlinks '/media/you/My Drive/links'
~/make-symlinks /media/you/'My Drive'/links
~/make-symlinks /media/you/My\ Drive/links

그러나 ~홈 디렉토리에 사용 하는 경우 다음을 인용하지 마십시오.

~/make-symlinks ~/'Two Words'   # good
~/make-symlinks ~/Two\ Words    # good
~/make-symlinks '~/Two Words'   # BAD, because ~ doesn't get expanded

make-symlinks하위 디렉토리를 작성하는 것처럼 대상 디렉토리가 존재하지 않는 경우 대상 디렉토리를 작성합니다. 그러나 대상이 이미 존재하는 경우에도 여전히 작동합니다.

여러 번 실행하고 동일한 대상 디렉토리를 전달할 수도 있습니다 (예 : Ctrl+로 중단 한 경우 C).failed to create symbolic link 이미 존재하는 심볼릭 링크에 오류가 발생하여 혼동 될 수 있습니다.

이미 존재하고 관련되지 않은 파일 (예 : 홈 디렉토리)이 포함 된 디렉토리의 이름을에 전달하지 않으려 고 할 수 make-symlinks있습니다. 그렇게하면 전체 심볼릭 링크와 하위 폴더가 만들어 질 것으로 예상 할 수 있습니다. 아마도 새 디렉토리를 사용하고 싶거나 아직 존재하지 않는 디렉토리를 사용하고 싶을 것입니다.make-symlinks .

새로 생성 된 심볼릭 링크 트리를 Shotwell으로 가져옵니다.

을 실행 한 후이 make-symlinks응답의 첫 번째 부분 ( "Shotwell에서 이미지 폴더 열기 (하위 폴더 포함)") 중 하나를 사용하여 전달한 디렉토리를 Shotwell로 가져 오십시오. ) . 예를 들어 Shotwell을 열고 폴더를 드래그 할 수 있습니다.

폴더의 모든 항목은 .cr2다른 파일 형식없이 파일 또는 파일을 포함하는 디렉토리에 대한 심볼릭 링크 이므로 Shotwell은 다른 파일을 볼 수 없습니다.


5

Shotwell은 이미지가 열려있는 모든 디렉토리에서 찾은 모든 이미지를 순환하므로 find -name '*.cr2' -exec shotwell '{}' + 원래 제안한대로 하면 실제로 도움이되지 않습니다. Shotwell의 설정은 다소 제한되어 있기 때문에 원하는 파일 만 열려면 파일을 새 디렉토리로 옮기는 것이 유일한 방법입니다.

당신은 find그것을 위해 사용할 수 있습니다 :

mkdir ~/cr2files
find -type f -iname '*.cr2' -not -path './dir/*' -exec cp -v -- '{}' ~/cr2files \;

교체 cpmv 중복 파일을 만들지 않도록하려는 경우.

노트:

  • mkdir ~/cr2files 홈 디렉토리에 새 디렉토리를 만드십시오
  • find 트리를 통해 아래쪽으로 현재 디렉토리에서 재귀 적으로 검색
  • -type f 파일 만 검색
  • -iname 대소 문자를 무시하고 이름으로 파일 검색
  • '*.cr2'으로 끝나는 이름 .cr2-따옴표를 사용하여 쉘이 전달되기 전에 글로브 확장을 중지하십시오.find
  • -not -path './dir/*'dir결과에서 디렉토리의 내용을 제외합니다
  • {} 발견 된 파일의 경로를 나타냅니다.
  • --이후 cpcp더 이상의 옵션을 허용하지 말아 -문제 를 일으키는 파일 이름을 피하는 것입니다.

그런 다음 Shotwell을 사용하여 새 디렉토리의 모든 파일을 열고 모든 파일을 순환 할 수 있습니다


디렉토리에서 .jpg 및 .png 파일도 여는 이유는 무엇입니까? * .cr2를 지정하는 것을 알 수 있습니까? Shotwell에서 왼쪽 화살표를 누를 때 .cr2 파일을 보려면 어떻게해야합니까? + 대신 \를 사용하면 아무 일도 일어나지 않습니다. (
user285884

오! 이것이 문제입니다 @ 미안,이 디렉토리에서 찾은 모든 이미지를주기를 shotwell있어 user285884 ... 나는 ... 주위에 방법을 알아낼 수 있다면 나를 보자
ZANNA

@ user285884가 편집되었지만 우아한 해결책을 찾지 못했습니다 :(
Zanna

1
노력해 주셔서 감사합니다! 이것에 대해서는 디렉토리에서 .cr2 파일을 검색하여 cr2files라는 별도의 폴더로 옮깁니다. mv * .cr2 ../cr2files/를 사용하여 하나의 하위 폴더 내에서 수행했으며 작동했습니다!. 그러나이 작업을 수행하고 조사 할 파일을 어떻게 지정합니까? "hey linux는 .cr2 파일의 폴더 1-10을보고 cr2files 폴더로 옮기십시오"와 같은 것입니까? 감사합니다 Zanna
user285884

1
내가 어디에 있는지에 대한 맥락에서. 사진 몇 장을 잃어 버렸습니다. 그래서 나는 photorec을했고 그것은 전체 하드 드라이브를 채울만큼 충분한 폴더를 주었다. 그래서 나는 내가 알고있는 파일이 아니라고 알고있는 많은 .cr2 파일을 가지고 있기 때문에 하나를 제외하고 하드 드라이브의 모든 폴더를보고 싶습니다. 그래서 리눅스가 하나를 제외한 모든 폴더를 통과하기를 원합니다. 귀하의 코드가 그렇게하는지 잘 모르겠습니다. {}의 기능은 무엇입니까? -v 뒤에 "-"? 고마워 Zanna!
user285884

1

옵션 1- xargs파일 이름에 공백이 포함 된 경우 사용

아래 주석에서 지적했듯이 back ticks파일 이름에 공백이 있으면 (아래 옵션 3) 사용이 중단됩니다. find명령을 shotwell사용하고 xargs옵션 을 사용하여 출력을 전달 하는보다 안전한 방법은 다음과 같습니다.

find . -name "*.cr2" -print0 | xargs -0 shotwell

-print0플래그를 사용하여 찾을 알려줍니다 \0(널 문자) 파일 이름 사이의 구분 기호를하고, -0플래그는 알 xargs이 기대하는 \0구분 기호를.

스택 오버플로 에서 here ( find 명령으로 반환 된 파일 목록을 파이프하는 방법)에 대한 훌륭한 답변을 얻었습니다.

옵션 2- -exec파일 이름에 공백이 포함 된 경우 사용

아래 설명에서 알 수 있듯이이 -exec옵션은 공백이 포함 된 파일 이름도 지원합니다. 아래의 다른 의견은 파일 수가 초과되면 이것이 중단된다는 것을 나타냅니다.

find . -name "*.cr2" -exec shotwell {} +

옵션 3-파일 이름에 공백이없는 경우

예전에는 파일 이름에 공백이 있고 256 자 길이가되기 전에이 옵션이 제대로 작동했습니다. 이 옵션은 다른 많은 웹 사이트에서 언급되었지만 이 옵션을 사용해서는 안됩니다 . 당시에는 find명령을 사용하고 출력을 전달하는 shotwell것이 가장 간단한 방법이었습니다.

shotwell `find . -name "*.cr2"`

이것은 find현재 디렉토리에서 시작 하며 모든 하위 디렉토리를 포함합니다.

  • 위의 back tick작은 따옴표를 사용 하지 말고 사용하십시오 '. 백틱을 사용하는 것은 $(...)bash 내에서 구문을 묶는 것과 유사합니다 .
  • 첫 번째 인수 .find현재 디렉토리 인 시작점을 제공 합니다. /home/$USER/Pictures대신 또는 다른 것을 전달할 수 .있습니다.
  • 두 번째 인수 -name는 find가 파일 이름 (디렉토리가 아님)을 검색하도록 지시합니다.
  • 이 기술은뿐만 아니라 모든 명령에 적용 shotwell됩니다. 즉, 당신은 그것을 사용할 수 있습니다 cat, head, tail대부분의 다른 인기있는 리눅스 명령.

백틱을 사용하는 것은 눈살을 찌푸리게하며 단어 분리와 관련된 문제가 있습니다. 나는 파이프로 변경하고 모든 파일 이름을 사용하여 NULL 문자열을 구분 기호로 사용 xargs 하는 것이 좋습니다-0
Sergiy Kolodyazhnyy

이 답변의 접근 방식의 문제점은 파일 이름 또는 파일을 포함하는 디렉토리 이름에 공백이 있으면 잘못 수행한다는 것입니다. 많은 사람들 $( )이 backtick 명령 대체 구문 보다 명령 대체 구문을 선호하지만 이 문제와 관련이 없습니다. 둘 다 정확히 같은 방식으로 실패합니다. @ Serg 나는 그것을하는 방법에 대한 새로운 답변을 게시하는 것이 좋습니다 xargs. (대체 " "도 넣는 것도 효과가 없습니다. 모든 find결과는 단일 인수로 전달됩니다.)
Eliah Kagan

이 답변을 쓸 때 xargs옵션 도 보았습니다 Stack Overflow. 그 옵션으로도 확장하겠습니다. 불행히도 오늘 아침 손상된 NTFS파티션 을 수정하기 위해 Windows 8로 부팅 해야 테스트가 문제가되었습니다. 그래도 나중에 답변을 업데이트하겠습니다. 지적 해 주셔서 감사합니다 :)
WinEunuuchs2Unix

왜 그냥 사용하지 -exec않습니까?
Zanna

@Zanna 나도 -exec옵션을 추가하겠습니다 :)
WinEunuuchs2Unix

-2

Shotwell이 원시 파일을 열 었는지 알지 못했습니다. 나는 당신이 digikam 또는 darktable로 더 많은 마일리지를 얻을 수 있다고 확신합니다. Digikam은 일부 Kde 구성 요소와 함께 제공되며 꽤 좋은 사진 관리자입니다. Darktable은 매우 비파괴적인 편집 기능을 제공합니다.


Digikam (또는 Darktable)을 사용 하여 폴더의 파일 만 탐색하는 방법에 대한 자세한 정보를 포함하도록 이 답변을 편집 하여 편집 할 수 있습니까 .cr2? 그렇다면 원본 포스터에서 Shotwell 이 파일 표시하도록하는 데 문제가 있었기 때문에 이것이 가치가있을 수 있습니다 .cr2. Shotwell을 사용하여 해당 파일 만 탐색하고 다른 파일은 탐색하지 못하도록하기 위해 추가 답변 을 추가했지만 Shotwell이이를위한 최고의 도구는 아니라고 강력하게 생각합니다.
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.