পুনরাবৃত্তভাবে ফাইলগুলির মালিক পরিবর্তন করুন, তবে ডিরেক্টরি নয়


14

আমার কাছে একটি ডিরেক্টরি রয়েছে যার ~ 50k ডিরেক্টরি এবং ~ 1m ফাইল রয়েছে।

আমি সমস্ত ফাইলের মালিক (বা অনুমতি) পরিবর্তন করতে চাই, তবে ডিরেক্টরিগুলি নয়। এটি কারণ আমি রিমোট সার্ভার থেকে অতিরিক্ত ফাইলগুলি (CP 150k ডিরেক্টরি এবং ~ 3.6m ফাইল) এসসিপি করার চেষ্টা করছি।

আমার কাছে থাকা ডিরেক্টরিটি দূরবর্তী ডিরেক্টরিটির একটি অংশ, তবে স্কিপ ব্যর্থ হয়েছে ...

যদি আমি আবার এসসিপি চালাই তবে এটি দূরবর্তী ডিরেক্টরি থেকে অনুলিপি করা ফাইলগুলি ওভাররাইট করে শুরু হবে।

উত্তর:


20

আপনি ব্যবহার করতে পারেন find, এটির একটি অতিরিক্ত সুবিধা রয়েছে যে ARG_MAXপ্রক্রিয়াটিতে ট্রিগার করা হবে না। মূল ডিরেক্টরি থেকে:

find . -type f -exec chown newowner {} +

এর জন্য chmod:

find . -type f -exec chmod 644 {} +

-type ffindকেবল ফাইল করবে ।


1
সত্যিই দুর্দান্ত কাজ! ধন্যবাদ!
Chmod

2
তাহলে findট্রিগার হয় না ARG_MAX? আমি সবসময় ভেবেছিলাম এটি হবে। আপনি সর্বদা কিছু শিখেন :)
কোস

5

আরেকটি বিকল্প ব্যবহার করা হয় xargs। আপনি ব্যবহার করতে হবে -print0সঙ্গে বিকল্প findআর এর সাথে -0বিকল্প xargs:

find . -type f -print0 | xargs -0 chown newuser:newgroup

থেকে man find:

-print0

স্ট্যান্ডার্ড আউটপুটে সম্পূর্ণ ফাইলের নাম মুদ্রণ করুন, তারপরে নাল অক্ষর অনুসরণ করুন । এটি ফাইলের নামগুলিতে নিউলাইনগুলি বা অন্যান্য ধরণের সাদা স্থানযুক্ত ফাইলগুলির সন্ধানের আউটপুট প্রক্রিয়া করে এমন প্রোগ্রামগুলির দ্বারা সঠিকভাবে ব্যাখ্যা করতে দেয় to এই বিকল্পটি xargs -0 বিকল্পের সাথে মিলে যায়।

xargsসঠিকভাবে পরিচালনা করবে ARG_MAX


2
find..execকি অদ্ভুত ফাইলের নামগুলি হ্যান্ডেল করে? আপনি কী ভাবেন যে এটি তা করে না?
হিমাইল

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