날짜를 기준으로 파일을 나열하고 디렉토리에 있는 파일의 날짜를 개별적으로 변경하고 싶습니다.
현재 파일:
abc051217.log
xyz051217.log
ccc051217.log
ddd051217.log
위에서는 아래와 같이 날짜로 이름을 바꿔야 하는 파일만 선택하고 싶습니다.
이후 파일:
abc021217.log
xyz021217.log
ccc021217.log
ddd021217.log
해결책이 있나요?
답변1
mmv
. 을 사용하면 mmv
표준 쉘 패턴을 사용하여 "?" 및 "*"를 사용하여 "#" + 숫자(1부터 시작)로 인용된 0개 이상의 문자를 일치시킬 수 있습니다.
따라서 귀하의 사용 사례에서
mmv -n '*??????.log' '#102#4#5#6#7.log'
이 옵션 -n
은 시험 실행이므로 mmv
실제로 파일을 삭제하지 않고 수행할 작업만 인쇄합니다. 실제로 원하는 효과가 나타나는지 확인한 후 -n
.
답변2
이름을 바꾸려는 모든 파일을 test.txt test.txt에 넣으십시오.
abc051217.log
xyz051217.log
ccc051217.log
ddd051217.log
요구 사항에 따라 이름을 바꾸려면 아래 코드를 사용하십시오.
암호.
i=021217;sed '/^$/d' test.txt|awk -v i="$i" '{print "mv" " " $1 " " substr($1,1,3)i".log"}' | sh
산출
abc021217.log
xyz021217.log
ccc021217.log
ddd021217.log