수정 날짜 타임스탬프를 기준으로 여러 파일에 번호를 매기나요?

수정 날짜 타임스탬프를 기준으로 여러 파일에 번호를 매기나요?

그래서 문서를 시간순으로 잔뜩 다운받았는데, 복사해서 편집해야 해서 수정 날짜가 바뀌더라구요. 다운로드한 순서대로 앞에 숫자(001_, 002_...)를 추가하고 싶습니다.

답변1

그리고 zsh:

autoload zmv
n=0; zmv -n '*(#qOm)' '${(l[3][0])$((++n))}_$f'

(만족스러우면 제거하세요 -n(드라이런의 경우)).

그건:

  • zmv: zsh 확장 glob 및 교체 연산자를 사용하여 파일 이름을 바꾸는 자동 로드 기능
  • *: 현재 디렉토리에 숨겨져 있지 않은 모든 파일
  • (#q...): 전역 한정자의 장황한 형식을 도입합니다.
  • Om: 나이순으로 정렬하였습니다. 그래서 최신 마지막.
  • ${(l[3][0])$((++n))}$((++n)): 너비 3의 왼쪽에 0 패딩을 적용하여 확장합니다.
  • _$f추가 _및 원본 파일 이름

답변2

해결책을 찾았습니다여기.

ls -1tr |rename -v 's/.*/our $i;if(!$i){$i=1;} sprintf("%04d.pdf", $i++)/e'

답변3

find . -type f -printf '%C@ %p\0' |
  sort -z -n |
  awk  'BEGIN{RS=ORS="\0"};{print $2}' | 
  rename -0 -n 'our $i;
                s:(^.*/)([^/]*):sprintf("%s%04d_%s",$1,++$i,$2):e'

이는 GNU를 사용하여 UNIX 에포크( ) 이후의 초 단위 숫자 형식의 수정 타임스탬프와 공백 문자가 앞에 붙은 NUL로 구분된 파일 이름( 즉, 전체 경로) find을 인쇄합니다 .%p%C@

원하는 경우 find여기에 있는 다른 옵션을 사용하여 파일 검색을 세분화할 수 있습니다(예: -name "*.pdf", -maxdepth 2등).

findsort그런 다음 옵션을 사용하여 NUL로 구분된 입력을 숫자(타임스탬프 기준)로 정렬하고 출력을 GNU로 파이프한 -z -n다음 awk로 타임스탬프와 공백을 제거하고 마지막으로 이를 perl 이름 바꾸기 스크립트로 파이프합니다.

Perl 이름 바꾸기 스크립트는 이 -0옵션을 사용하여 STDIN에서 NUL로 구분된 레코드를 읽은 후 다음을 수행합니다.

  • sprintf()'%s%04d_%s'( %04d_0 패딩, 너비 4자리 및 밑줄) 와 함께 사용되며 $i이름의 파일 이름 부분을 대체하기 위한 카운터로 사용됩니다.

    $1는 전체 파일 이름의 경로 부분이고, $++i자동 증가 카운터 변수이며, $2기본 파일 이름입니다.

  • $i전역 변수 로 선언하면 our루프가 반복될 때마다 값이 유지됩니다(그렇지 않으면 매번 0으로 재설정됩니다).

-n옵션은 테스트 실행 작업으로 전환하여회의이름이 변경되었습니다. 원하는 대로 작동한다고 확신하면 제거하여 -n출력이 없는 파일의 이름을 자동으로 바꾸거나 -v자세한 출력으로 바꾸십시오.

ls -1tr이것을 사용하는 것과는 달리아니요파일 이름에 개행 문자가 포함되어 있으면 중단됩니다. 그것은 함께 작동합니다어느유효한 파일 이름입니다.


참고로, 각 파일 이름 뒤에 올바른 형식의 날짜를 추가하려면 내 rename스크립트를 참조하세요.파일 이름 끝에 수정된 날짜 타임스탬프를 사용하여 여러 파일의 이름을 바꾸시겠습니까?. 파일 이름에 날짜 및 시간 접두어를 추가하도록 쉽게 수정됩니다. 타임스탬프를 얻기 위해 각 파일에서 실행 stat되므로 파일 이름을 미리 정렬할 필요가 없습니다.

예를 들어

rename -n 'BEGIN {use Date::Format};
           die $! unless -f $_;
           next if (m/^\d{8}-$/);
           my $ts=(stat($_))[9];
           my $dt=time2str("%Y%m%d-%H%M%S",$ts);
           $_ = "$dt-$_"' *.pdf

관련 정보