简体   繁体   中英

How do I match the file name from different directories and replace the partial filename with the actual filename?

So I have a slightly complicated issue that I need some help with:(

In Directory 1, I have the filenames as follows:

00HFP.mp4
0AMBV.mp4
2D5GN.mp4
3HVKR.mp4
3IJGQ.mp4

In Directory 2, I did some processing to the mp4s and got some output files:

_0HFP.usd
_AMBV.usd
_D5GN.usd
_HVKR.usd
_IJGQ.usd

For some reason, the programme I'm using replaces the first number/character with an underscore for some files. Other files are generally left alone. But I need the filenames to match:( How do I do a mass renaming (over 500 files) based on this partial naming using python script? So like for example: _0HFP.usd should become 00HFP.usd since there's a 00HFP.mp4 file in Directory 1.

Please help:( Thank you!

Trying this (as suggested by Corralien): but still doesn't work for me:(

dir1 = pathlib.Path('./mnt/d/Downloads/Charades_v1_480/charades_18Jan/done/')
dir2 = pathlib.Path('./mnt/d/Downloads/Charades_v1_480/charades_18Jan_anim/pt-charades-output/')

print('i am here')

for f1 in dir1.glob('*.mp4'):
    print(f1)
    f2 = dir2 / f'_{f1.stem[1:]}.usd'
    if f2.exists():
        f2.rename(dir2 / f'{f1.stem}.usd')

Suppose the following directories:

Dir1
├── 00HFP.mp4
├── 0AMBV.mp4
├── 2D5GN.mp4
├── 3HVKR.mp4
└── 3IJGQ.mp4
Dir2
├── _0HFP.usd
├── _AMBV.usd
├── _D5GN.usd
├── _HVKR.usd
└── _IJGQ.usd

Try:

import pathlib

dir1 = pathlib.Path('./Dir1')
dir2 = pathlib.Path('./Dir2')

for f1 in dir1.glob('*.mp4'):
    f2 = dir2 / f'_{f1.stem[1:]}.usd'
    if f2.exists():
        f2.rename(dir2 / f'{f1.stem}.usd')

After processing:

Dir1
├── 00HFP.mp4
├── 0AMBV.mp4
├── 2D5GN.mp4
├── 3HVKR.mp4
└── 3IJGQ.mp4
Dir2
├── 00HFP.usd
├── 0AMBV.usd
├── 2D5GN.usd
├── 3HVKR.usd
└── 3IJGQ.usd

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM