나는 가지고있다
123myfile123.jpg
123456myfile567.jpg
첫 번째 알파 문자 앞의 모든 것을 제거하고 싶습니다.
myfile123.jpg
myfile567.jpg
0-9를 모두 제거하는 것이 있습니다.
mv '123myfile123.jpg' $(echo '123myfile123.jpg' | sed -e 's/[0-9]//g')
myfile,jpg
나에게 필요한 결과myfile123.jpg
이에 대한 도움을 주시면 대단히 감사하겠습니다.
답변1
이것은 단지 제안일 뿐입니다. 이 작업을 수행하는 더 효율적인 방법이 있을 수 있지만 이것이 도움이 되기를 바랍니다.
for i in $(find . -type f -name '*.jpg'); do mv -v $i $(echo $i | sed 's/\.\/[0-9]\+\(.*.jpg\)/\1/g'); done
명령에 대한 간단한 설명:
먼저 각 파일과 일치하는 find
명령의 각 결과를 반복합니다..jpg
예제 출력:
./123myfile567.jpg
./123456myfile567.jpg
그런 다음 \.\/[0-9]\+\(.*.jpg\)
정규식은 다음을 수행합니다.
./
처음부터 일치했어요 .- 나는 다음을 사용하여 하나 이상을 일치시킵니다
[0-9]
.+
- 계속 사용하고 싶은 부분을 선택하고
()
나중에 불러요\1
[편집하다]
아직 하나 있어요도구호출 rename
되며 정규식 사용을 기반으로 합니다. 나는 그것이 어떤 사람들에게 도움이되기를 바랍니다.
답변2
rename
Larry Wall의 Perl 버전을 설치할 수 있습니다 .
Universe 저장소에서 Ubuntu에 설치할 수 있습니다. ( getpack
이제 자체 쉘 스크립트이므로 원하는 경우 여기에 추가하거나 링크할 수 있습니다.) rename
다른 Linux 배포판에도 설치할 수 있다고 생각합니다.
$ getpack rename
lrwxrwxrwx 1 root root 24 jan 10 2023 /usr/bin/rename -> /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 jan 10 2023 /etc/alternatives/rename -> /usr/bin/file-rename
-rwxr-xr-x 1 root root 4529 okt 31 2021 /usr/bin/file-rename
-------------------------------------------------------------------
/usr/bin/file-rename: Perl script text executable
-------------------------------------------------------------------
package: /path/program [for command 'rename']
rename: /usr/bin/file-rename
-------------------------------------------------------------------
type: rename is /usr/bin/rename
$ apt-cache policy rename
rename:
Installerad: 1.30-1
Kandidat: 1.30-1
Versionstabell:
*** 1.30-1 500
500 http://se.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
500 http://se.archive.ubuntu.com/ubuntu jammy/universe i386 Packages
100 /var/lib/dpkg/status
sudo apt install rename
그런 다음 옵션을 사용하여 "테스트 실행"을 확인할 수 있습니다.-n
$ rename -n 's/^[0-9]*//' *myfile*.jpg
rename(123456myfile567.jpg, myfile567.jpg)
rename(123myfile123.jpg, myfile123.jpg)
괜찮아 보이면 삭제 -n
하고 실행하고 파일 이름을 바꾸세요.
rename 's/^[0-9]*//' *myfile*.jpg
대상 파일은 *myfile*.jpg
아마도 실제 대상 파일을 기반으로 수정되어야 합니다 *.jpg
.