QNAP nas의 단일 디렉토리에 수천 개의 원본 사진( .nef
)과 관련 설정(동일한 파일 이름, 동일한 확장자)이 있습니다. 내 목표는 자동으로 또는 else라는 하위 디렉터리를 .xmp
만들고 그에 따라 모든 파일을 거기로 이동하는 것입니다. 모든 파일 이름은 밀리초와 비슷 하거나 그 이내 입니다 . yyyy-mm
yyyy/mm
yyyy-mm-dd_hhmmss-###.nef
yyyy-mm-dd_hhmmss-###.xmp
###
답변1
이러한 파일 이름의 연도를 알고 있다면 무차별 대입 공격을 가할 수 있습니다.
for year in {1996..2018}; do
for month in {01..12}; do
mkdir -p ${year}-${month}
for filetype in nef xmp; do
mv ${year}-${month}*.${filetype} ${year}-${month}/
done
done
done
답변2
다음은 표준 QNAP에서 사용할 수 있는 제한된 명령 세트가 포함된 루프 기반 솔루션입니다.
#!/bin/bash
for file in ????-??-??_*.{nef,xmp}
do
yyyymm=${file/-??_*}
echo mkdir -p "$yyyymm"
echo mv -f "$file" "$yyyymm/"
done
예를 들어 파일에 넣으십시오. /root/fixup
파일이 많은 디렉토리로 변경하고 를 실행하십시오 bash /root/fixup
. yyyy-mm
처리 중인 파일 이름을 기반으로 요청 시 디렉터리를 생성 합니다 .
쓰여진 대로 아무것도 바뀌지 않습니다.제대로 작동할 것 같다고 만족하면 echo
스크립트 끝 부분에 있는 두 줄에서 해당 단어를 제거하세요.
답변3
특정 패턴에 따라 디렉토리를 일괄 생성하려는 경우 다음을 사용할 수 있습니다.
mkdir -p ~/{0001,0002,0003,...,XXXX}/{01,02,03,...,XX}
변수를 실제로 사용하려는 값으로 바꾸십시오. 따라서 연도, 월, 일 디렉터리를 만드는 예는 다음과 같습니다.
mkdir -p ~/{1998..2018}/{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}/{01..31}
그런 다음 31일이 없는 달을 검색하고 아래 설명에 따라 제거할 수 있습니다.이 게시물. 그 후, 당신의 임무는 사진을 올바른 디렉토리로 정렬하는 것입니다. 이는 찾기 및 삭제와 매우 유사하며 다음에 설명되어 있습니다.이 게시물.
이렇게 하면 현재 작업 디렉터리 내에 하위 디렉터리가 생성됩니다. DopeGhoti 사용자가 언급했듯이 for 루프를 만들어 각 단계를 한 번에 완료할 수 있습니다. 행운을 빌어요!