rename
또한 명령에서 명령 대체 확장을 원하고 명령 에서 그룹 일치 패턴을 사용하고 대체 부분에서 역참조를 사용할 때 확장을 위해 큰따옴표를 사용 rename
하지만 셸도 역참조를 매개변수로 처리하여 이름 바꾸기 문제를 일으킵니다. 이것을 어떻게 피할 수 있습니까?
rename "s:(.*)$(date +"%Y%m%d"):$1$(date -d "+1day" +"%Y%m%d"):" *
또한 확장 부분을 대체하는 별도의 명령을 시도했지만 운이 없었습니다 $(date -d "+1day" +"%Y%m%d")
. .
rename 's:(.*)'"$(date +"%Y%m%d")"':$1'"'"$(date -d "+1day" +"%Y%m%d")"'"':' *
답변1
그냥 $
탈출하세요 $1
:
rename "s:(.*)$(date +"%Y%m%d"):\$1$(date -d "+1day" +"%Y%m%d"):" *
하지만 다음과 같이 패턴을 단순화할 수 있습니다.
rename "s#$(date +%Y%m%d)#$(date -d +1day +%Y%m%d)#" *
(이것은 #
확장에 존재하지 않는다고 가정합니다 date
).
답변2
이것이 Perl 버전이라고 가정하면 rename
, 한 가지 해결책은 Perl을 사용하여 날짜 계산을 수행하는 것입니다.
rename 'use Time::Piece;use Time::Seconds;$t=localtime;$n=$t+ONE_DAY;$f=q{(.*)}.$t->strftime("%Y%m%d");s:$f:$1.$n->strftime("%Y%m%d"):e' *
perl
공급업체가 코어 설치에 이상한 조치를 취하지 않는 한 이러한 모듈은 코어 >= 5.10이어야 합니다 .