파일 이름 내부의 특정 문자 시퀀스를 대체합니다.

파일 이름 내부의 특정 문자 시퀀스를 대체합니다.

내 친구가 Windows에서 이런 방식으로 수많은 파일을 그룹화했습니다.

여기에 이미지 설명을 입력하세요

우분투로 전환하게 한 후에는 더 이상 앞의 느낌표 수에 따라 파일 순서가 지정되지 않으므로 다음 규칙에 따라 파일을 어떻게 전환할 수 있는지 알고 싶습니다.

  • 1그리고!!!

  • 0그리고!!!!!!!

awk를 사용해야 할 것 같지만 전문가가 아니므로 여기에 있습니다 ..

답변1

GUI를 사용하여 파일 및 디렉터리의 일괄 이름을 바꾸려면 다음을 사용할 수 있습니다.GP이름 바꾸기.

GP이름 바꾸기

다음을 사용하여 설치할 수 있습니다.

sudo apt-get install gprename

답변2

Python 스크립트에서:

#!/usr/bin/env python3
import os
import shutil
import sys

dr = sys.argv[1]
replace = ["!", "!!", "!!!", "!!!!"]

for f in os.listdir(dr):
    test = [f.startswith(s) for s in replace]
    if test.count(True) > 2:
        shutil.move(dr+"/"+f, dr+"/"+"0"+f.replace("!", ""))
    elif 0 < test.count(True) < 3:
        shutil.move(dr+"/"+f, dr+"/"+"1"+f.replace("!", ""))

이름의 시작 부분에만 발생한다고 가정하면 선행 !!!!!!!by 0, 및 !!by !가 대체됩니다 .1!

그것을 사용하려면

  1. 스크립트를 빈 파일에 붙여넣고 다른 이름으로 저장하세요.rename.py
  2. 다음 명령을 사용하여 터미널 창에서 실행합니다.

    python3 /path/to/rename.py '<directory>'
    

    <directory>이름을 바꿀 파일이 포함된 디렉터리는 어디에 있습니까?

답변3

예를 들어 Perl 기반 rename명령을 사용할 수도 있습니다.

rename -vn -- 's/^!{1,2}(?!!)/0/' *

이름 시작 부분( )에 !a가 뒤따르지 않는 하나 또는 두 개의 문자와 일치합니다 .!^에스대체 0; 그리고

rename -vn -- 's/^!{3,4}(?!!)/1/' *

이름 시작 부분( )에 !a가 뒤따르지 않는 3~4개의 문자와 일치합니다 .!^에스대체 1.

참고: -n스위치를 사용하면 실제로 이름을 변경하지 않고도 '모의 실행'을 수행할 수 있습니다. 먼저 표현식을 테스트하고 n계속하려면 제거하십시오.

관련 정보