නිශ්චිත පෙළක් අඩංගු සියලුම ලිපිගොනු සඳහා මගේ සම්පූර්ණ ලිනක්ස් පද්ධතිය පරිලෝකනය කිරීමට ක්රමයක් සෙවීමට මම උත්සාහ කරමි. පැහැදිලි කිරීම සඳහා, මම සොයන්නේ ගොනුවේ පෙළ මිස ගොනුවේ නම නොවේ.
මම මෙය කරන්නේ කෙසේදැයි සොයා බලන විට, මට මෙම විසඳුම දෙවරක් හමු විය:
find / -type f -exec grep -H 'text-to-find-here' {} \;
කෙසේ වෙතත්, එය ක්රියා නොකරයි. එය පද්ධතියේ සෑම ගොනුවක්ම පෙන්වන බව පෙනේ.
මෙය කළ යුතු නිසි ක්රමයට මෙය සමීපද? එසේ නොවේ නම්, මා කෙසේ විය යුතුද? ලිපිගොනු වල පෙළ නූල් සොයා ගැනීමේ මෙම හැකියාව මා කරන සමහර ක්රමලේඛන ව්යාපෘති සඳහා අසාමාන්ය ලෙස ප්රයෝජනවත් වනු ඇත.
-H
සමග -l
(හා සමහරවිට grep
සමග fgrep
). සමහර නම් රටා සහිත ලිපිගොනු බැහැර කිරීම සඳහා ඔබ find
වඩාත් දියුණු ආකාරයකින් භාවිතා කරනු ඇත. භාවිතා කිරීමට ඉගෙන ගැනීම වටී find
. යන්තම් man find
.
find … -exec <cmd> +
ටයිප් කිරීමට පහසු සහ වඩා වේගවත් find … -exec <cmd> \;
. එය ක්රියාත්මක වන්නේ <cmd>
ගොනු නාම තර්ක ගණනක් පිළිගන්නේ නම් පමණි . <cmd>
පයිතන් හෝ රූබි ස්ක්රිප්ට් මෙන් ආරම්භ කිරීම මන්දගාමී නම් ක්රියාත්මක කිරීමේ කාලය ඉතිරි කිරීම විශේෂයෙන් විශාල වේ.
grep "pattern" path/*.txt
.
එකක් තනි අක්ෂර ආදේශක කාඩ්පතක් ලෙස අර්ථකථනය කරන බව මතක තබා ගන්න . මගේ අවවාදය නම් සෑම විටම fgrep හෝ egrep භාවිතා කිරීමයි.