ডান দশমিক সংখ্যাগুলি কীভাবে সাজান


1

আমার কাছে একটি ফোল্ডার রয়েছে যাতে প্রতিটি অ্যাপ্লিকেশন সংস্করণের (দশমিক সংখ্যা) উপ-ফোল্ডার থাকে। এখন, আমার কাছে powershellসংস্করণ তুলনার জন্য একটি স্ক্রিপ্ট রয়েছে। সমস্যাটি হচ্ছে আমি এটি আশানুরূপ অনুসারে বাছাই করতে পারি না। আমি কীভাবে এটি এক লাইনের কোডে সমাধান করব, কারণ আমি এটি ব্যাচ স্ক্রিপ্ট থেকে করছি।

Get-ChildItemফোল্ডার সামগ্রী দেখতে ব্যবহার করা

বর্তমান সাজান ( batchস্ক্রিপ্ট থেকে সম্পাদন :

powershell -Command "& {Get-ChildItem "\folder_dir\" -Name | sort-object -descending }

সমাধানের জন্য বিকল্পগুলি:

  1. Get-ChildItemতারিখ অনুসারে বাছাই করুন এবং কোনওভাবে কেবল ফোল্ডারগুলির নাম মুদ্রণ করুন (নিয়মিত আউটপুট যেমন "নাম" শিরোনাম ছাড়াই)
  2. Get-ChildItemনাম অনুসারে বাছাই করুন এবং কোনওভাবে এটি বাছাই করতে (সমস্যাটি দশমিক সংখ্যার সাথে)

উদাহরণস্বরূপ (উতরাই বা আরোহণ, কিছু যায় আসে না The আদেশটি কী জিনিস):

Folder content:
1.0
1.111
1.11
2.2
1.18
2.5
2.44

Current output:
2.5 <-- wrong place
2.44
2.2
1.18 <-- wrong place
1.111
1.11
1.0

Expected sort:
1.0
1.11
1.18
1.111
2.2
2.5
2.44

নিকটতম উত্তর লিঙ্ক ছিল । তবে আমার কাছে চিঠি নেই, কেবল সংখ্যা রয়েছে
igor

2
আপনি যা সন্ধান করছেন তা প্রাকৃতিক বাছাই। এই বা এই সহায়ক হতে পারে। আপনার উদাহরণ হিসাবে কেন আপনি এটি মানিয়ে নিতে সক্ষম হবেন না? এটা ঠিক যে আপনি বিন্দু ব্যবহার করে বিভক্ত এবং প্রতিটি গ্রুপ সাজান?
শেঠ

কনভোলিউটেড তবে এটি আপনার নমুনার সাথে মেলে:Get-ChildItem "\folder_dir\" -Name | sort $("{0}.{1}" -f ($_ -replace '^(.*?)\.\d+$', '$1'), ($_ -replace '^.*?\.(\d+)$', '$1').PadLeft(10, "0"))
লিভেন কের্মসেকারস

@ শেঠের প্রাকৃতিক বাছাইয়ের উদাহরণটি কাজ করে।
রুটটি

@ সেথ সমাধান কাজ করেছে worked চূড়ান্ত আদেশ:powershell -Command "& {Get-ChildItem "\\nas\shared\Public\Igor\gscript\version" -Name | sort-object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }}
igor

উত্তর:


1

@ শেঠ সমাধানে ক্রেডিট

লিঙ্ক থেকে

চূড়ান্ত আদেশ: powershell -Command "& {Get-ChildItem "\\nas\shared\Public\Igor\gscript\version" -Name | sort-object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }}


0

আপনার স্ক্রিপ্ট পুরোপুরি কাজ করছে।

আপনার ক্রমবর্ধমান ক্রম অনুসারে বাছাই হয়েছে এবং এটি ঠিক এটি করে।

লক্ষ্য করুন যে বাম দিকে নম্বর। উচ্চ থেকে নীচেও যায়।

সুতরাং আপনার লিপিটি নিম্নলিখিত হিসাবে থাকা প্রয়োজন:

powershell -Command "& {Get-ChildItem "\\nas\shared\Public\Igor\gscript\version" 
   -Name | sort-object }

ডিফল্ট ব্যবহার না করা অবধি ডিফল্টরূপে সাজানো-অবজেক্ট বাছাইয়ের ক্রমে সাজানো।


(1) পিএসে সাজ্ট-অবজেক্টের জন্য কোনও "আরোহণ" নেই (2) আমার স্ক্রিপ্টটি সঠিকভাবে কাজ করে না, বর্ণনাটি দেখুন
igor

@ আমার খারাপ। এটি পূর্বনির্ধারিতভাবে আরোহণ করে না, যদি না আপনি সেট-ডেডেন্ডিং সেট করেন। আমার উত্তর প্রতিবিম্বিত সম্পাদনা।
এলপিচীপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.