كيف يمكنني إعادة تسمية الملفات في الدلائل الفرعية؟

StackOverflow https://stackoverflow.com/questions/245840

  •  05-07-2019
  •  | 
  •  

سؤال

هل هناك أي طريقة لإعادة تسمية الملفات دفعة واحدة في الدلائل الفرعية؟

على سبيل المثال:

إعادة تسمية *.html ل *.htm في مجلد يحتوي على الدلائل والأدلة الفرعية.

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

المحلول

ويندوز موجه الأوامر: (إذا داخل ملف دفعي، تغيير٪ السينية ل٪٪ خ)

for /r %x in (*.html) do ren "%x" *.htm

وهذا يعمل أيضا لإعادة تسمية منتصف الملفات

for /r %x in (website*.html) do ren "%x" site*.htm

نصائح أخرى

لويندوز، وهذا هو أفضل وسيلة وجدتها:

http://www.1-4a.com/rename/

ويمكن أن تفعل أي شيء، وقد بالوعة المطبخ معها.

لينكس، لديك عدد كبير من لغات البرمجة وقذائف لمساعدتك، مثل الأجوبة السابقة.

find . -regex ".*html$" | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done

في بيثون

import os

target_dir = "."

for path, dirs, files in os.walk(target_dir):
    for file in files:
        filename, ext = os.path.splitext(file)
        new_file = filename + ".htm"

        if ext == '.html':
            old_filepath = os.path.join(path, file)
            new_filepath = os.path.join(path, new_file)
            os.rename(old_filepath, new_filepath)

في باش، هل يمكن أن تفعل ما يلي:

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done

وأنا متأكد من أن هناك وسيلة أكثر أناقة، ولكن هنا فإن أول ما برزت في رأسي:

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done

إذا كان لديك ملفات تعريف (تأتي مع نظامي التشغيل Windows XP و2003 والأشياء الأحدث على ما أعتقد) فيمكنك تشغيل:

الملفات /S /M *.HTM /C "cmd /c ren @file *.HTML"

في لينكس، يمكنك استخدام " إعادة تسمية 'الأوامر لإعادة تسمية الملفات في دفعة واحدة.

In bash use command rename :)

 rename 's/\.htm$/.html/' *.htm

 # or

 find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/'

 #Obs1: Above I use regex \. --> literal '.'  and  $ --> end of line
 #Obs2: Use find -maxdepht 'value' for determine how recursive is
 #Obs3: Use -print0 to avoid 'names spaces asdfa' crash!

قائد المجموع حيث هو التطبيق مدير الملفات، يتيح لك قائمة وتحديد كافة الملفات داخل دير لها وتطبيق الاستعراض المفصل الفرعية، ثم يمكنك تشغيل أي من إجمالي عمليات قائد عليها. واحد منهم: متعددة تسمية-الملفات المحددة

وAWK على لينكس. الدليل الأول وهذا هو جوابك ... استقراء من خلال الاتصال بشكل متكرر AWK على dir_path ربما عن طريق الكتابة AWK آخر الذي يكتب هذا AWK المحدد أدناه ... وهلم جرا.

ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh

لويندوز، ولقد قدمت ليت مريحة فبسكريبت حل مع إعادة تسمية القائمة على التعابير المنطقية والسحب والإفلات الدعم. محاولة إعطائها إذا أردت - وضعها في ملف فبس وإسقاط المجلد الخاص بك على ذلك في مستكشف

في ويندوز، وإعادة تسمية يفعل بعمل جيد جدا في ذلك. مجانية، ولكن ليس المصدر المفتوح.

على نظام التشغيل Windows، يمكنك معرفة لغة C# البسيطة والمفتوحة المصدر. إعادة تسمية الملف بالجملة التطبيق في https://filerenamer.codeplex.com يعمل مع بسيطة ملف اكسل.قم بإعطاء ملف Excel يحتوي على عمودين المصدر والوجهة لهذا التطبيق ويتم ذلك.

في يونكس، يمكنك استخدام rnm:

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

أو

rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *

توضيح:

  1. -ns :سلسلة الاسم (الاسم الجديد). /n/ هي قاعدة سلسلة اسم تتوسع إلى اسم الملف بدون الامتداد.
  2. -ss :سلسلة البحث (regex).يبحث عن الملفات ذات المطابقة.
  3. -rs :استبدال سلسلة النموذج /search_regex/replace_part/modifier
  4. -fo :وضع الملف فقط
  5. -dp :عمق الدليل (-1 يعني غير محدود).
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top