내용에 따라 파일 이름 변경

내용에 따라 파일 이름 변경

파일 자체의 내용을 기반으로 파일 세트의 이름을 바꾸려고 합니다. 작업이 완료될 때쯤에는 이름을 바꿔야 하는 파일이 천 개가 넘을 것입니다. 파일 이름의 첫 번째 부분을 가져오는 코드가 있지만 파일 이름에 다른 요소를 포함해야 합니다. 이것은 제가 매일 다른 작업에서 사용하는 코드의 첫 번째 부분입니다.

# open(INFILE,"list.txt") or die "could not open file for reading!\n";
open(OUTFILE, '>forecast_mips.txt') or die "Cannot open forecast.txt: $!";

my @output;

while(<INFILE>) {
    chomp;
    next if /^\s*$/;

    my @fields = split;

    foreach my $field (@fields) {
            push @output, $field
            if $field =~ /^\*?[ABMQRWY][A-Z0-9]{4}235/;

    
                
    }
    foreach my $field1 (@fields
}

print OUTFILE join("\n", @output), "\n";
print join(@output),"\n";

그러나 파일 이름에 다른 두 가지 요소를 포함하려고 합니다. 파일에는 위 코드에서 생성된 작업 이름이 포함되어 있지만 작업 번호(5자리)와 실행 날짜(5자리 Julian 고정 날짜)도 필요합니다. 다음은 문서의 기초입니다. 굵은 글씨가 제가 필요한 파일 이름입니다. 날짜는 율리우스력 날짜여야 합니다(이 경우 22356). 따라서 아래 내용에서는 파일명이 D47YC235#03618-22356이 됩니다. 다음 항목을 검색하고 파일 이름을 설정하는 더 좋은 방법이 있는지 확실하지 않습니다. if $field =~ 줄은 파일에서 D47YC235를 생성합니다.

00.55.30 JOB03618  ICH70001I $$MP235  LAST ACCESS AT 00:55:30 ON THURSDAY, **DECEMBER 22, 2022**
00.55.30 JOB**03618**  $HASP373 **D47YC235** STARTED - INIT 39   - CLASS R        - SYS V4YM

답변1

파일이 형식을 지정하는 두 줄로 시작하고 명령줄에 해당 이름이 있다고 가정하면,TxR이름 변경을 계산하는 절차는 다음과 같습니다.

$ txr data.txr data
rename data -> D47YC235#03618-22356
$ txr data.txr data data data data
rename data -> D47YC235#03618-22356
rename data -> D47YC235#03618-22356
rename data -> D47YC235#03618-22356
rename data -> D47YC235#03618-22356

프로그램은 어디에 있나요 data.txr?

@(next :args)
@(repeat)
@filename
@  (next filename)
@nil JOB@job @nil @nil LAST ACCESS AT @time ON @wday, @date
@nil JOB@job @nil @code @nil
@  (bind newname `@code#@job-@{(time-parse "%b %d, %Y" date).(time-string "%y%j")}`)
@  (do (put-line `rename @filename -> @(path-cat (dir-name filename) newname)`))
@(end)

이는 참조를 위해 실제로 실행하지 않고 쉘 명령 구문의 이름 바꾸기만 인쇄합니다. 실제로 이름 바꾸기를 수행하려면 rename-pathTXR Lisp의 기능을 사용할 수 있습니다 .

@  (do (rename-path filename (path-cat (dir-name filename) newname)))

job이 두 줄에서 변수를 추출했다는 점에 유의하세요 . 이것이 바로 역참조입니다. 두 위치가 일치해야 합니다. 그렇지 않으면 파일을 건너뜁니다.

Vim 구문 강조를 사용한 코드:

여기에 이미지 설명을 입력하세요.

관련 정보