Answers:
ඒ සඳහා සොයා ගැනීම භාවිතා කරන්න :
find . -name "foo*"
find
ආරම්භක ලක්ෂ්යයක් අවශ්ය වන අතර .
(තිත) වත්මන් නාමාවලියට යොමු කරයි.
find . foo*
, foo*
එය පුළුල් වන අතර එය සොයා ගැනීමට සමත් වනු ඇත.
" "
පුනරාවර්තන සෙවීම සඳහා ඉතා අවශ්ය වන අවධාරණය කිරීම වටී .
find . -name "foo*" 2>/dev/null
Grep තුළට සොයා ගැනීම බොහෝ විට වඩාත් පහසු ය; අත්තනෝමතික ආදේශක ගැලපීම් සඳහා නිත්ය ප්රකාශනවල පූර්ණ බලය එය ඔබට ලබා දෙයි.
උදාහරණයක් ලෙස, ගොනු නාමයේ ඇති "foo" අක්ෂර සංවේදී නොවන වචන සහිත සියලුම ගොනු සොයා ගැනීමට:
~$ find . -print | grep -i foo
find
ද ඇත -iname
, -regex
සහ -iregex
කිරීමට ගිනි අඟුරුවල නිසා, නඩුව-අසංවේදී ආදේශක, regex, සහ නඩුව-අසංවේදී regex ගැලපෙන කොඩි grep
අනවශ්ය වේ.
find
එම විකල්පයන්ට සහාය දෙන විධානයක් නොලැබෙන බව අත්දැකීමෙන් ඔබට පැවසිය හැකිය . සමහර විට grep
එකම විකල්පය බවට පත්වේ.
find
රටාවකට ගැලපෙන සියලුම ගොනු සොයා ගනු ඇත:
find . -name "*foo"
කෙසේ වෙතත්, ඔබට පින්තූරයක් අවශ්ය නම්:
tree -P "*foo"
මෙය උපකාරී වේ යැයි සිතමු!
brew install tree
මැක් ඕඑස්එක්ස් භාවිතා කරන්නන් සඳහා apt-get
ස්ථාපනය කර ඇත
find -L . -name "foo*"
අවස්ථා කිහිපයකදී, සංකේතාත්මක නාමාවලි සම්බන්ධතා හැසිරවීමට මට -L පරාමිතිය අවශ්ය වී තිබේ. පෙරනිමියෙන් සංකේතාත්මක සබැඳි නොසලකා හරිනු ලැබේ. එවැනි අවස්ථා වලදී මම ඩිරෙක්ටරිය උප ඩිරෙක්ටරියකට වෙනස් කර රටාවට ගැළපෙන ගොනුව දකින නමුත් ගොනු නාමය නැවත ලබා නොදෙන බැවින් එය තරමක් ව්යාකූල විය. -L භාවිතා කිරීමෙන් එම ගැටළුව විසඳේ. සොයා ගැනීම සඳහා සංකේතාත්මක සම්බන්ධක විකල්පයන් වන්නේ -P -L -H
ඔබගේ කවචය නව ග්ලෝබිං විකල්පයකට සහය දක්වන්නේ නම් (පහත පරිදි සක්රීය කළ හැකිය shopt -s globstar
), ඔබට මෙය භාවිතා කළ හැකිය:
echo **/*foo*
ඕනෑම ලිපිගොනු හෝ ෆෝල්ඩර නැවත නැවත සොයා ගැනීමට. මේ සඳහා Bash 4, zsh සහ සමාන ෂෙල් වෙඩි ඇත.
පුද්ගලිකව මට මෙම කවචයේ ක්රියාකාරිත්වය අර්ථ දක්වා ඇත:
f() { find . -name "*$1*"; }
සටහන: ඉහත පේළිය කෙලින්ම ෂෙල් එකට ඇලවිය හැකිය හෝ ඔබේ පරිශීලක ~/.bashrc
ගොනුවට එක් කළ හැකිය.
ටයිප් කිරීමෙන් මට ඕනෑම ලිපිගොනු සොයා ගත හැකිය:
f some_name
විකල්පයක් ලෙස ඔබට සරල වාක්ය ඛණ්ඩයක් සහිත fd
උපයෝගීතාවයක් භාවිතා කළ හැකිය , උදා fd pattern
.
shopt -s globstar
විධාන මඟින් විස්තාරිත ග්ලෝබින් සක්රිය කළ යුතු බැවිනි . Bash, zsh සහ ඒ හා සමාන ෂෙල් වෙඩි සඳහා මෙය සහය දක්වයි.
bash-3.2$ shopt -s globstar
ලබා දෙයිbash: shopt: globstar: invalid shell option name
fd
බාග වෙලාවට, find
සෙමෙන්, උත්සාහ කරයි fd
උපයෝගිතා - සරල සහ වේගවත් විකල්ප find
රස්ට් ලියා.
වාක්ය ඛණ්ඩය:
fd PATTERN
නිරූපණය:
මුල් පිටුව: https://github.com/sharkdp/fd
asciicast2vector
භාවිතා කළ හැකිය.
find <directory_path> -type f -name "<wildcard-match>"
ආදේශක-ගැලපුමේදී ඔබට ගැලපෙන නූල උදා. * .C (සියලුම සී ගොනු සඳහා) ලබා දිය හැකිය.
ඔයාට පාවිච්චි කරන්න පුළුවන්:
# find . -type f -name 'text_for_search'
ඔබට REGX භාවිතය අවශ්ය නම් -iname
# find . -type f -iname 'text_for_search'
පුනරාවර්තන ගොනුව සෙවීම සඳහා සුපුරුදු ක්රමය වන අතර බොහෝ අවස්ථාවන්හිදී ලබා ගත හැකිය
find . -name "filepattern"
එය ඔබ ස්ථානගත කර ඇති වත්මන් නාමාවලිය තුළ සිට ගොනු නාමයක් හෝ රටාවක් සඳහා පුනරාවර්තන ගමන් ආරම්භ කරයි. සොයා ගැනීමේ විධානය සමඟ, ඔබට විකල්ප ලැයිස්තුවක් බැලීමට ටයිප් කරන්න, ආදේශක කාඩ්පත් සහ විවිධ ස්විච භාවිතා කළ හැකිය
man find
හෝ ඔබේ පද්ධතියේ මෑන් පිටු නොමැති නම්
find --help
කෙසේ වෙතත්, පසුව සොයා ගන්නා වඩාත් නවීන හා වේගවත් මෙවලම් තිබේ, ඒවා ඔබේ සමස්ත ගොනු පද්ධතිය හරහා ගමන් කරමින් ඔබේ ලිපිගොනු සුචිගත කරයි, එවැනි එක් පොදු මෙවලමක් වන්නේ ස්ථානගත කිරීම හෝ ස්ථානගත කිරීම / ස්ථානගත කිරීම ය, එය ස්ථාපනය කරන්නේ කෙසේද යන්න පිළිබඳව ඔබේ මෙහෙයුම් පද්ධතියේ අත්පොත පරීක්ෂා කළ යුතු අතර, එය වරක් ස්ථාපනය කර ඇති විට එය දත්ත සමුදාය ආරම්භ කළ යුතුය, ස්ථාපන ස්ක්රිප්ට් ඔබ වෙනුවෙන් එය නොකරන්නේ නම්, එය ටයිප් කිරීමෙන් අතින් කළ හැකිය
sudo updatedb
තවද, කිසියම් විශේෂිත ගොනු වර්ගයක් සොයා බැලීමට එය භාවිතා කිරීම
locate filename
නැතහොත්, වත්මන් නාමාවලිය තුළ සිට ගොනු නාමයක් හෝ පැටර්ටරයක් සෙවීමට, ඔබට ටයිප් කළ හැකිය:
pwd | xargs -n 1 -I {} locate "filepattern"
එය එහි ගොනු දත්ත ගබඩාව හරහා සොයා බලනු ඇති අතර ඔබ ටයිප් කළ රටාවට ගැලපෙන මාර්ග නාම ඉක්මනින් මුද්රණය කරයි. ස්ථානගත කිරීමේ විකල්පයන්ගේ සම්පූර්ණ ලැයිස්තුව බැලීමට, ටයිප් කරන්න:
locate --help
හෝman locate
මීට අමතරව, ක්රෝන් ජොබ් හරහා නියමිත වේලාවට එහි දත්ත සමුදාය යාවත්කාලීන කිරීම සඳහා ඔබට ස්ථානය වින්යාසගත කළ හැකිය, එබැවින් 1AM ට db යාවත්කාලීන කරන නියැදි ක්රෝන් මෙන් පෙනේ:
0 1 * * * updatedb
මෙම ක්රෝන් කාර්යයන් root මගින් වින්යාසගත කළ යුතුය, මන්ද යාවත්කාලීන කරන ලද අයට සම්පූර්ණ ගොනු පද්ධතිය හරහා ගමන් කිරීමට root වරප්රසාදය අවශ්ය වේ.
අප පුනරාවර්තනය වීමට යන විට ස්ථානගත කිරීම දැඩි ලෙස භාවිතා නොකිරීම ගැන මම පුදුම වෙමි.
වර්තමාන උනන්දුවක් දක්වන ෆෝල්ඩරයේ ඇති ලිපිගොනු ලැයිස්තුව ලබා ගැනීම සඳහා මම පළමුව "$ පීඩබ්ලිව්ඩී" සොයාගනු ඇත, පසුව මා කැමති පරිදි ඒවා මත ග්රෙප් ධාවනය කරන්න.
locate "$PWD" | grep -P <pattern>
ඇත්ත වශයෙන්ම, මෙය උපකල්පනය කරන්නේ යාවත්කාලීන කිරීම සිදු කර ඇති අතර දර්ශකය වරින් වර යාවත්කාලීන වන බවයි. මෙය සොයා ගැනීමක් ධාවනය කිරීමට වඩා එය සොයා ගැනීමට වඩා වේගවත් ක්රමයක් වන අතර එය ගසෙන් බැස යන්න. සම්පූර්ණත්වය සඳහා මෙය සඳහන් කිරීම. ගස ඉතා බර නොවේ නම්, සොයා ගැනීම භාවිතා කිරීමට විරුද්ධ කිසිවක් නැත.
locate "$PWD*.mp4"
ඔබට මඟ හැරිය හැකි බව මතක් කිරීම සඳහාgrep
පහත දැක්වෙන විධානය ඕනෑම ලිපිගොනු සෙවීමට උපකාරී වේ
1) නඩුව නොසලකා
2) ප්රති ult ලය අවසරයකින් තොරව ෆෝල්ඩර බැහැර කිරීම
3) මූලයෙන් හෝ ඔබ කැමති මාර්ගයෙන් සෙවීම. ඔබ කැමති මාර්ගය වෙනස් කරන්න / වෙනස් කරන්න.
වාක්ය ඛණ්ඩය:
-iname '' 2> & 1 | සොයා ගන්න grep -v "අවසරය ප්රතික්ෂේප කරන ලදි"
උදාහරණය
find / -iname 'C * .xml' 2> & 1 | grep -v "අවසරය ප්රතික්ෂේප කරන ලදි"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
find / -iname '*C*.xml' 2>/dev/null
ඔබට ආදේශක කාඩ්පත සමඟ විශේෂ ගොනුවක් සෙවීමට අවශ්ය නම්, ඔබට පහත කේතය භාවිතා කළ හැකිය:
find . -type f -name "*.conf"
සෑම .conf ලිපිගොනු මෙතැනින් සෙවීමට ඔබට අවශ්ය යැයි සිතමු:
.
සෙවීම මෙතැන් සිට ආරම්භ කිරීම (වත්මන් ස්ථානය)
-type
යන්නෙන් අදහස් කරන්නේ මෙහි ඇති ගොනුව (එෆ්) යන්නයි. * .conf නම්
-name
සහිත ගොනු සෙවීමට ඔබට අවශ්යය .
භාවිත
find path/to/dir -name "*.ext1" -o -name "*.ext2"
පැහැදිලි කිරීම
find
පුනරාවර්තනය සිදු වේ.-o
සඳහා කි්රයා -or
. එබැවින් ඉහත අදහස් කරන්නේ මෙම ආදේශක කාඩ්පත හෝ මෙය සොයන්න. ඔබට ඇත්තේ එක් රටාවක් පමණක් නම් අවශ්ය නොවේ -o
.