دستور find در سیستم عامل‌های یونیکس و شبه یونیکس یکی از قدرتمند ترین دستورها‌ست. با استفاده‌ی ترکیبی از این دستور می‌توان کار‌ جست‌و‌جو در محتوای فایل‌ها و تغییر در آن‌ها را با سرعت بالایی انجام داد. قصد ندارم این دستور را با همه‌ی جزئیات معرفی کنم زیرا برای مطالعه‌ی بیش‌تر می‌توانید از دستور man find استفاده کنید یا از نسخه‌ی آنلاین آن استفاده کنید. اولین موردی که می‌خواهم به آن اشاره کنم قابلیت شرط‌های منطقی است. به عنوان مثال شما به دنبال فایل‌هایی با پسوند php هستید اما می‌خواهید آن فایل‌ها در شاخه‌ی testing نباشند. به سادگی می‌توانید این عمل را با find انجام دهید:

find -iname "*.php" -and -not -path "./testing/*"

پس از پیدا کردن فایل‌ها و پوشه‌ها می‌توانید از سوییچ‌های exec و execdir استفاده کنید تا دستور مورد نیاز را روی پرونده‌ها و پوشه‌ها اعمال کنید. به عنوان مثال شما می‌خواهید تعدادی مقاله آماده کنید. نوشته‌های مربوط به مقاله‌ی «موزیک» را در پوشه‌ی music و نوشته‌های مقاله‌ی «ادبیات» را در پوشه‌ی literature قرار می‌دهید که آن دو در پوشه‌ی Articles هستند و متن‌ها را با پسوند txt ذخیره کرده‌اید. اما متوجه می‌شوید کلمه‌ای را در همه‌ی آن‌ها اشتباه نوشته‌اید و می‌خواهید آن را درست کنید. پس شما قصد دارید عمل find & replace را در همه‌ی فایل‌های txt که در پوشه‌ی Articles هستند، انجام دهید:

find /path/to/Article/ -iname "*.txt" -exec sed -i "s/find/replace/g" {} \;

می‌دانید با ذخیره‌ی فایل‌ها بیش‌تر ویرایش‌گر‌های گنو/لینوکس نسخه‌ی پشتیبان تهیه می‌کنند که نام فایل پشتیبان همان نام فایل اصلی است که به انتهای آن ~ اضافه می‌شود (البته قابل تغییر است). برای پاک کردن این فایل‌ها نیز می‌توانید از find و سوییچ delete استفاده کنید:

find -name "*~" -delete

منبع: صفحه‌ی راهنمای دستور find