이미지를 반복적으로 검색하고 날짜 폴더로 이동합니다.


0

묻는 의문 9 개월 전에 이미지를 백업 폴더에 복사하는 방법에 대해 알아 봅니다. 그 경우에 효과가있었습니다! 하지만 지금은 또 다른 문제가 있습니다. 233GB의 정렬되지 않은 데이터 (주로 이미지)가 있으며 정렬되지 않은 디렉토리 구조에 있습니다.

나는 (모든 이미지에서 가능하다면) 날짜를 기준으로 이미지를 정렬하고 원본 파일 이름을 유지하려고 생각했습니다.

질문을 찾았습니다. 이리 , 그러나 나는 그것을 시험해 보지 않았다 - 물건을 망쳐 두려워한다.

제 질문은 : 어떻게 재귀 적으로 폴더를 검색하고 bmp, jpg, JPG, jpeg 및 gif 형식의 이미지를 이동합니까? /home/username/Documents/backup/[date] 폴더 (ex. /home/username/Documents/backup/2013-06-10/DSC01158.JPG ), 그리고 그 폴더가 존재하지 않는다면 - 그것을 생성하십시오. 가능하면 파일 이름을 유지하십시오.

사용 된 시스템 : macOS Sierra 10.12.4

편집하다: 날짜가 파일 이름에 날짜를 포함하지 않기 때문에 메타 데이터에서 날짜를 추출해야합니다.


1
필자는 파일의 메타 데이터 (날짜 표시)에서 날짜를 가져온 것으로 가정합니다. 두 번째 링크의 예는 실제로 도움이되지 않습니다. 날짜는 파일 이름에서 가져옵니다.
nohillside

아하 그래! 하지만 맞습니다. 타임 스탬프는 파일 이름 자체가 아닌 메타 데이터에서 가져온 것입니다.
Adam

아, 그곳에서 받아 들여진 대답 만 보았습니다. 다른 사람들은 실제로 당신이 필요로하는 것보다 더 많거나 적은 것을합니다.
nohillside

답변:


1

검색 및 실행하려는 폴더로 변경하십시오.

find . -type f -iname '*.jpg' | while read file; do
    ts=$(stat -f '%Sm' -t '%Y-%m-%d' "$file")
    folder="/path/to/backup/folder/$ts"
    [[ -d "$folder" ]] || echo mkdir "$folder"
    echo mv "$file" "$folder/"
done

작은 샘플을 먼저 테스트하고 둘 다 제거하는 것이 가장 좋습니다. echo 출력이 합리적인 경우 s입니다.


위의 명령에서 "mp"를 "cp"로 변경하면 파일을 새 디렉토리로 이동하는 것과 반대로 복사 할 수 있습니까? "$ ts"는 무엇을 의미합니까?
user26732

@ user26732 예, cp 파일을 이동하는 대신 복사합니다. ts 전에 줄에 할당 된 변수입니다 ( ts=$(...) ). 내부에서 파트를 실행하십시오. ( ) 그것이 무엇인지 알기 위해.
nohillside
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.