두 개의 파일을 생성하는 백업 스크립트가 있습니다.
ㅏ) db_mywebsite_2018-01-10_00-25.sql.gz
(150MB)
두번째) mywebsite1_2018-01-10_00-01.tar.gz
(2GB)
파일 이름에서 날짜(XXXX-XX-XX_XX-XX)를 제거하고 싶습니다. 백업은 매일 이루어지기 때문에 파일 이름에 날짜가 다릅니다. 이를 위해 다음 명령을 사용합니다.
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
테스트를 위해 touch
두 개의 db_mywebsite_2018-01-10_00-25.sql.gz
파일을 편집했습니다.mywebsite1_2018-01-10_00-01.tar.gz
주문하다:
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
산출:
db_mywebsite_2018-01-10_00-25.sql.gz renamed as db_mywebsite.sql.gz
1. 문제는 위의 메시지 "db_mywebsite_2018-01-10_00-25.sql.gz가 db_mywebsite.sql.gz로 이름이 바뀌었음에도 불구하고 확인해 보면 ls -l
해당 파일 이름이 변경되지 않은 것처럼 보인다는 것입니다.
2. 파일 이름 바꾸기 명령(정규식)은 작동하지 않습니다 mywebsite1_2018-01-10_00-01.tar.gz
.
답변1
Perl 버전의 경우
rename
이 옵션은 다음-n
을 의미합니다.작업 없음: 이름을 바꿀 파일 이름을 인쇄하지만 이름을 바꾸지는 않습니다. 파일 이름을 바꾸려면 이-n
옵션을 사용하지 마십시오. 그래서 대신:rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
사용:
rename -v 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
고려하다:
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz
위 명령은 으로만 이름을 바꾸려고 시도합니다 . 파일이 로 시작하므로
.sql.gz
이름은 바뀌지 않습니다 . 두 파일의 이름을 바꾸려면 다음을 시도하십시오.mywebsite1_2018-01-10_00-01.tar.gz
.tar.gz
rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.tar.gz *.sql.gz