سؤال

أبحث عن برنامج نصي (Perl، Python أو Batch سيكون على ما يرام) من شأنها أن تذهب من خلال شجرة ملف مخصصة وإعادة تسمية جميع ملفات الأطفال.

علي سبيل المثال، Folder1>File1.anytype يصبح Folder1>Folder1File1.anytype.

شكرا

هل كانت مفيدة؟

المحلول

تذكر ملف دفعي، والذي ربما يعني أنك موجود في Windows (أفترض أنك تشير إلى ملف .bat). إذا كنت على نظام UNIX، فامنح هذه بالرصاص:

find . -mindepth 2 -type f -exec sh -c "mv {} \`dirname {}\`/\`dirname {} | sed 's/^\.//' | sed 's/\///g'\`\`basename {}\`" \;

بدلا من ذلك، قد يقوم برنامج Python 3 بهذا الخدعة (يجب أن تعمل أيضا على Windows ...):

#!/usr/bin/env python3.0

import os
import sys 

def raise_error(e):
    raise e

def full_split(path):
    head, tail = os.path.split(path)

    if head:
        return full_split(head) + [tail]

    return [tail]

def main(args):
    if len(args) != 1:
         print("Please specify one target directory", file=sys.stderr)
         sys.exit(1)

    os.chdir(args[0])
    for dirpath, _, filenames in os.walk('.', onerror=raise_error):
        for f in filenames:
            old = os.path.join(dirpath, f)
            new = os.path.join(dirpath, ''.join(full_split(dirpath[2:]) + [f]))
            os.rename(old, new)

if __name__ == '__main__':
    main(sys.argv[1:])

تخطيط الدليل قبل:

.: abc def ./abc: foo2.bar foo.bar ./def: baz2.quux baz.quux ghi ./def/ghi: bar2.foo bar.foo

تخطيط الدليل بعد:

.: abc def ./abc: abcfoo2.bar abcfoo.bar ./def: defbaz2.quux defbaz.quux ghi ./def/ghi: defghibar2.foo defghibar.foo

نصائح أخرى

أفضل دفعة أرنان هو MMV..

ونرى أيضا كيف تقوم بإعادة تسمية جماعي؟

يمكنك تقديم محاولة إلى Batchrename: http://batchrename.foryoursoft.com/

يمكنك تحقيق مثل هذه إعادة تسمية باستخدام حلقة متداخلة في سطر الأوامر .. وإن كان القبيح قليلا:

for /D %d in (*) do for %f in ("%d\*.*") do move "%f" "%d\%~nd%~nf"

إذا كنت ترغب في وضع الأمر أعلاه في برنامج نصي دفعة، كرر كل شخص أحرف مرة واحدة.

for /D %%d in (*) do for %%f in ("%%d\*.*") do move "%%f" "%%d\%%~nd%%~nf"

لفهم ما يفعله الأمر أعلاه، استشر FOR /? في سطر الأوامر.

أشعر أن الدفعة هي القمامة هذه الأيام التي أحتاجها للحفاظ على حكمة الخفافيش بطريقة أو بأخرى ... :-)

أنا أمزح :-) .. لكن الأمر يعمل، لقد جربته.

تافهة جميلة في بيرل باستخدام ملف :: find. و نسخة الملف

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top