WordPress 사이트에서 파일을 가져오려면 wget을 실행해야 합니다. [,random-string-text.pagespeed.blah]를 사용하여 모든 JPG를 저장합니다.
쉼표 뒤의 모든 텍스트를 제거하여 이러한 JPG의 이름을 재귀적으로 바꾸는 방법이 있습니까?
답변1
원하는 작업을 수행하는 Python 스크립트는 다음과 같습니다.
#!/usr/bin/env python2
# -*- coding: ascii -*-
"""remove_extensions.py
Remove meta-data filename extensions added by wget.
"""
import sys
import os
import re
# Define a regular expression to match the file-extension pattern
regex = r'^(.*),random-string-text.pagespeed.blah$'
for current_path, subdirectories, files in os.walk(sys.argv[1]):
for filename in files:
match = re.match(regex, filename)
if match:
newname = match.groups()[0]
newpath = os.path.join(current_path, newname)
oldpath = os.path.join(current_path, filename)
os.rename(oldpath, newpath)
실제 파일 이름 패턴과 일치하도록 정규식을 약간 수정해야 합니다(또는 그것이 무엇인지 명시하도록 질문을 업데이트해야 합니다).
다음은 스크립트가 실제로 작동하는 모습을 보여주는 테스트입니다.
일부 디렉터리를 만듭니다.
mkdir /tmp/dir1
mkdir /tmp/dir1/dir2
mkdir /tmp/dir3
일부 파일로 채우십시오.
touch /tmp/dir1/file{01..03}.jpg,random-string-text.pagespeed.blah
touch /tmp/dir1/dir2/file{04..06}.jpg,random-string-text.pagespeed.blah
touch /tmp/dir3/file{07..10}.jpg,random-string-text.pagespeed.blah
우리가 한 일을 확인하려면:
user@host:~$ tree /tmp
/tmp/
├── dir1
│ ├── dir2
│ │ ├── file04.jpg,random-string-text.pagespeed.blah
│ │ ├── file05.jpg,random-string-text.pagespeed.blah
│ │ └── file06.jpg,random-string-text.pagespeed.blah
│ ├── file01.jpg,random-string-text.pagespeed.blah
│ ├── file02.jpg,random-string-text.pagespeed.blah
│ └── file03.jpg,random-string-text.pagespeed.blah
└── dir3
├── file07.jpg,random-string-text.pagespeed.blah
├── file08.jpg,random-string-text.pagespeed.blah
├── file09.jpg,random-string-text.pagespeed.blah
└── file10.jpg,random-string-text.pagespeed.blah
3 directories, 10 files
이제 스크립트를 실행하십시오.
python remove_extensions.py /tmp/
마지막으로 원하는 효과가 있는지 확인하십시오.
user@host:~$ tree /tmp/
/tmp/
├── dir1
│ ├── dir2
│ │ ├── file04.jpg
│ │ ├── file05.jpg
│ │ └── file06.jpg
│ ├── file01.jpg
│ ├── file02.jpg
│ └── file03.jpg
└── dir3
├── file07.jpg
├── file08.jpg
├── file09.jpg
└── file10.jpg
3 directories, 10 files
답변2
파일 이름에 다른 쉼표가 없다고 확신하는 경우 다음을 시도할 수 있습니다.
for i in `find . -type f` ; do mv $i $(echo $i | sed 's/\(.*\),.*/\1/g') ; done