প্রোগ্রামযুক্তভাবে নতুন বা সংশোধিত ফাইলগুলির একটি তালিকা তৈরি করার জন্য আমি আসার সেরা সমাধানটি হ'ল আরএসইএনসি , সাজানো এবং ইউনিক ব্যবহার :
(rsync -rcn --out-format="%n" old/ new/ && rsync -rcn --out-format="%n" new/ old/) | sort | uniq
এই উদাহরণটি দিয়ে আমাকে ব্যাখ্যা করতে দাও: কোন ফাইলগুলি পরিবর্তন করা হয়েছিল এবং কোনটি নতুন তৈরি হয়েছিল তা দেখতে আমরা দুটি ডকউইকি প্রকাশের সাথে তুলনা করতে চাই।
আমরা উইজেট সহ টারগুলি আনা এবং সেগুলি ডিরেক্টরিগুলিতে বের করি old/
এবং new/
:
wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-2014-09-29d.tgz
wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-2014-09-29.tgz
mkdir old && tar xzf dokuwiki-2014-09-29.tgz -C old --strip-components=1
mkdir new && tar xzf dokuwiki-2014-09-29d.tgz -C new --strip-components=1
আরএসসিএনকে একপথে চালানো এখানে নতুন তৈরি ফাইলগুলি আরএসইএনসি এবং ডিফের শোগুলির তুলনা হিসাবে মিস করতে পারে:
rsync -rcn --out-format="%n" old/ new/
নিম্নলিখিত আউটপুট ফলন:
VERSION
doku.php
conf/mime.conf
inc/auth.php
inc/lang/no/lang.php
lib/plugins/acl/remote.php
lib/plugins/authplain/auth.php
lib/plugins/usermanager/admin.php
কেবলমাত্র এক দিকে চালনা করা সদ্য তৈরি হওয়া ফাইলগুলি মিস করে এবং অন্যভাবে মুছে ফেলা ফাইলগুলি মিস করবে, ভিন্নতার আউটপুট তুলনা করবে:
diff -qr old/ new/
নিম্নলিখিত আউটপুট ফলন:
Files old/VERSION and new/VERSION differ
Files old/conf/mime.conf and new/conf/mime.conf differ
Only in new/data/pages: playground
Files old/doku.php and new/doku.php differ
Files old/inc/auth.php and new/inc/auth.php differ
Files old/inc/lang/no/lang.php and new/inc/lang/no/lang.php differ
Files old/lib/plugins/acl/remote.php and new/lib/plugins/acl/remote.php differ
Files old/lib/plugins/authplain/auth.php and new/lib/plugins/authplain/auth.php differ
Files old/lib/plugins/usermanager/admin.php and new/lib/plugins/usermanager/admin.php differ
উভয় উপায়ে আরএসসিএন চালানো এবং ডুপ্লিকেট অপসারণের জন্য আউটপুটকে বাছাই করলে বোঝা যায় যে ডিরেক্টরি data/pages/playground/
এবং ফাইলটি data/pages/playground/playground.txt
প্রাথমিকভাবে মিস হয়েছিল:
(rsync -rcn --out-format="%n" old/ new/ && rsync -rcn --out-format="%n" new/ old/) | sort | uniq
নিম্নলিখিত আউটপুট ফলন:
VERSION
conf/mime.conf
data/pages/playground/
data/pages/playground/playground.txt
doku.php
inc/auth.php
inc/lang/no/lang.php
lib/plugins/acl/remote.php
lib/plugins/authplain/auth.php
lib/plugins/usermanager/admin.php
rsync
এই তর্ক যুক্তি দিয়ে চালিত হয়:
-r
"ডিরেক্টরিতে পুনরাবৃত্তি" করতে,
-c
অভিন্ন আকারের ফাইলগুলির তুলনা করতে এবং কেবল "চেকসামের উপর ভিত্তি করে এড়িয়ে যান, মোড-টাইম এবং আকার নয়",
-n
"কোনও পরিবর্তন ছাড়াই একটি ট্রায়াল রান সঞ্চালন" করতে এবং,
--out-format="%n"
"নির্দিষ্ট ফরমেট ব্যবহার করে আউটপুট আপডেট করতে", যা কেবলমাত্র ফাইলের নামের জন্য এখানে "% n"
rsync
উভয় দিকের আউটপুট (ফাইলগুলির তালিকা) ব্যবহার করে একত্রিত করে বাছাই করা হয় sort
এবং এই সাজানো তালিকাটি এর সাথে সমস্ত নকলকে সরিয়ে কনডেন্স করা হয়uniq