수정된 날짜별로 생성되고 이름이 지정된 폴더에 mv 파일을 일괄 처리하는 방법은 무엇입니까?

수정된 날짜별로 생성되고 이름이 지정된 폴더에 mv 파일을 일괄 처리하는 방법은 무엇입니까?

저는 터미널 관련 내용을 처음 접했고 위 주제에 대한 답변을 찾을 수 없습니다.

내 OS에서 터미널을 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

그리고 perl:

perl -MPOSIX -le 'for (<*.jpg>) {
  $d=strftime"%Y-%m-%d",localtime((stat$_)[9]);
  mkdir$d;rename$_,"$d/$_" or warn "rename $_: $!\n"}'

그리고 zsh:

zmodload zsh/stat
for f (*.jpg) {stat -F %F -A d +mtime -- $f && mkdir -p $d && mv -- $f $d}

답변2

OSX와 함께통계자료:

for file in *; do
    dir="$(stat -t %Y%m%d%H%M%S -f %Sm -- "$file")"
    mkdir -p "$dir"
    mv -- "$file" "$dir/$file"
done

GNU stat 사용(예: Linux 또는 Cygwin에서):

for file in *; do
    dir="$(stat -c %Y -- "$file")"
    mkdir -p "$dir"
    mv -- "$file" "$dir/$file"
done

그러면 각 파일이 mtime(에포크)을 따라 명명된 디렉터리로 이동됩니다.

디렉토리 모양을 보다 세밀하게 제어하려면 GNU 날짜를 사용하여 할당 줄을 다음과 같이 변경하여 형식을 다시 지정할 수 있습니다.

dir="$(date -d @"$(stat -c %Y -- "$file")" +%F)"

man date사용할 수 있는 날짜 형식 사양에 대한 정보는 참고자료를 참조하세요 . 이 경우는 %F다음과 같습니다.

%F 전체 날짜, %Y-%m-%d와 동일

관련 정보