【问题标题】:Linux: how to replace file names from a file containing original patterns and new patterns?Linux:如何从包含原始模式和新模式的文件中替换文件名?
【发布时间】:2018-11-28 10:23:26
【问题描述】:

如果您有 4 个名为 SampleA.txt、SampleB.txt、Samble25.txt 和 SampleA21.txt 的文件。 并且您有一个制表符分隔的 txt 文件,其中一列具有原始模式(SampleA、SampleB、Sample25、SampleA21),另一列具有相应的新模式(Community1、Community2、Community3、Community4),

有没有办法将文件标题从原始模式(第一列)更改为新模式(第二列)?

【问题讨论】:

  • 你看到了吗:askubuntu.com/q/283145?如果您只有几个模式,可能会很有用……
  • 嗨,山姆!谢谢,是的,我看到了。不幸的是,只要在一个文件中列出文件名的原始模式及其新模式,我想要一些可以转换它的东西,无论有多少对象以及对象有多么不同。不过谢谢!

标签: linux filenames


【解决方案1】:

刚刚对 Python 进行了一次快速 hack,也许这样的东西会很有用:

#!/bin/env python3

from sys import argv
from pathlib import Path
import csv

with open('rename-pats.txt') as fd:
    inp = csv.reader(fd, delimiter='\t')
    patterns = []
    for src, dst in inp:
        patterns.append((src, dst))

for path in argv[1:]:
    path = Path(path)
    name = path.name
    for src, dst in patterns:
        name = name.replace(src, dst)
    if path.name != name:
        path.rename(path.with_name(name))

依赖于名为 rename-pats.txt 的文件,其中包含以下内容:

SampleA Community1
SampleB Community2
Sample25    Community3
SampleA21   Community4

然后运行为:

python3 mmv.py *.txt

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 2012-06-16
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多