.bakවත්මන් නාමාවලියෙන් සහ එක් විධාන රේඛාවක් භාවිතා කරන සියලුම උප ෆෝල්ඩර වලින් නිශ්චිත දිගුවක් (උදා ) සහිත සියලුම ගොනු ආරක්ෂිතව මකා දැමිය හැක්කේ කෙසේද? සරලවම, මම rmඑය වරක් වැරදි ලෙස භාවිතා කළ බැවින් භාවිතා කිරීමට බිය වෙමි, දැන් මට උපදෙස් අවශ්යය.
.bakවත්මන් නාමාවලියෙන් සහ එක් විධාන රේඛාවක් භාවිතා කරන සියලුම උප ෆෝල්ඩර වලින් නිශ්චිත දිගුවක් (උදා ) සහිත සියලුම ගොනු ආරක්ෂිතව මකා දැමිය හැක්කේ කෙසේද? සරලවම, මම rmඑය වරක් වැරදි ලෙස භාවිතා කළ බැවින් භාවිතා කිරීමට බිය වෙමි, දැන් මට උපදෙස් අවශ්යය.
Answers:
ඔබ rmබිය වන්නේ නම් මෙම නඩුවේදී භාවිතා කිරීමට පවා ඔබට අවශ්ය නැත . භාවිතා කරන්න find:
find . -name "*.bak" -type f -delete
නමුත් එය පූර්වාරක්ෂාව සමඟ භාවිතා කරන්න. පළමුව ධාවනය කරන්න:
find . -name "*.bak" -type f
ඔබ ඉවත් කරන්නේ කුමන ගොනුදැයි හරියටම බැලීමට.
එසේම, එය-delete ඔබගේ විධානයෙහි අවසාන තර්කය බව තහවුරු කරගන්න . ඔබ එය පෙර තැබුවහොත් -name *.bak argument, එය සියල්ල මකා දමනු ඇත .
වැඩි විස්තර සඳහා බලන්න man findසහ man rmSE හා සම්බන්ධ මේ ප්රශ්නයද බලන්න:
rm *.bakකෙසේද?
rm *.bakඋප බහලුම් සඳහා ක්රියා නොකරනු ඇත.
rm *.bakසමඟ වත්මන් ඩිරෙක්ටරියේ .bak සමඟ අවසන් වන සියලුම ගොනු පමණක් මකා දැමෙනු ඇත. ඔබට ග්ලෝබ් සමඟ සම්බන්ධ වීමට, -r විකල්පය භාවිතා කිරීමට හෝ සොයා ගැනීමේ උදාහරණය භාවිතා කිරීමට අවශ්ය උප බහලුම්වල දේවල් කිරීමට.
rm -r *.bak! එමඟින් .bakඒවායේ සියලුම අන්තර්ගතයන්ගෙන් අවසන් වන නාමාවලි ඉවත් කරයි .
-deleteඑය ඔබගේ විධානයේ අවසාන තර්කය බව තහවුරු කරගන්න . ඔබ එය -name *.bakතර්කයට ඉදිරිපත් කළහොත් එය සියල්ල මකා දමනු ඇත.
find . -name "*.bak" -type f -print0 | xargs -0 /bin/rm -f
-deleteධජය වෙනුවට මෙය භාවිතා කිරීමෙන් කිසිදු වාසියක් ඇතැයි මම නොසිතමි find. සොයාගැනීම් සමඟ ලිපිගොනු මකා දැමීම සඳහා වැඩි විස්තර GNU අත්පොතෙහි සොයාගත හැකිය .
පළමුව විධානය ක්රියාත්මක කරන්න shopt -s globstar. ඔබට එය විධාන රේඛාවෙන් ධාවනය කළ හැකි අතර, එය ක්රියාත්මක වන්නේ එම කවච කවුළුව තුළ පමණි. ඔබට එය ඔබගේ තුළට දැමිය හැකිය .bashrc, එවිට අලුතින් ආරම්භ කරන ලද සියලුම ෂෙල් වෙඩි එය ලබා ගනී. එම විධානයේ ප්රති is ලය වන්නේ **/වත්මන් ඩිරෙක්ටරියේ සහ එහි උප බහලුම්වල ගැලපෙන ලිපිගොනු පුනරාවර්තනය කිරීමයි (පෙරනිමියෙන් **/අදහස් කරන්නේ එකම දෙයයි */: ක්ෂණික උප බහලුම්වල පමණි). ඉන්පසු:
rm **/*.bak
(හෝ gvfs-trash **/*.bakඔබට ඇත්තේ කුමක්ද).
ලිපිගොනු මකා දැමීම මට ඔබ භාවිතා කළ යුතු දෙයක් නොවේ rm. මෙන්න විකල්පයක්:
sudo apt-get install gvfs # install a tool that allows you to put stuff in the trash
alias "trash"="gvfs-trash" # you can also put this in .bash_aliases or simply use the command without alias
trash *.bak # trash the files (thus moving them to the trash bin)
අදහස් දැක්වීමේදී ෆ්ලිම් පවසන පරිදි:
මෙම පැකේජය
trash-cliමෙන් ම දෙයක් කරනවාgvfs-trashgvfs මත රඳා පැවැතීමට තොරව.
ඒ නිසා:
sudo apt-get install trash-cli
මේ සඳහා ඔබට අන්වර්ථයක් සෑදීමට අවශ්ය නැත, මන්ද trash-cliපැකේජය විධානයක් සපයන trashඅතර එය අපට අවශ්ය දේ කරයි.
එලියා කගන් පුළුල් අදහස් දැක්වීම් වලින් පැහැදිලි කරන පරිදි, ඔබට මෙම පුනරාවර්තන භාවිතයෙන්ද කළ හැකිය find. එවැනි අවස්ථාවකදී ඔබට අන්වර්ථයක් භාවිතා කළ නොහැක, එබැවින් පහත විධානයන් ඔබ ස්ථාපනය කර ඇතැයි උපකල්පනය කරයි trash-cli. මම එලියාගේ අදහස් සාරාංශ කරමි:
මෙම විධානය මඟින් .bakවත්මන් නාමාවලියෙහි හෝ එහි උප බහලුම්වල හෝ ඊට පහළින් ඕනෑම තැනක සියලුම ගොනු සහ සමමුහුර්ත සොයාගෙන ප්රදර්ශනය කරයි .
find . -name '*.bak' -xtype f
ඒවා මකා දැමීමට, විධානය -execසමඟ එකතු කරන්න trash:
find . -name '*.bak' -xtype f -exec trash {} +
-xtype fලිපිගොනු සහ ලිපිගොනු ගොනු වලට තෝරයි, නමුත් ෆෝල්ඩර නොවේ. .Bak ෆෝල්ඩර ද මකා දැමීමට, එම කොටස ඉවත් කර භාවිතා කරන්න -execdir, එමඟින් නාමාවලි තුළ ඇති ගොනු වල cannot trash non-existentදෝෂ මඟහරවා ගත හැකිය :.bak.bak
find . -name '*.bak' -execdir trash {} +
rmදේවල් මකා දැමීමට භාවිතා නොකරන්න " යනු මතභේදාත්මක ප්රකාශයකි, නමුත් බොහෝ විට ඔබට දේවල් අහෝසි කිරීමට ඉඩ දෙන යමක් භාවිතා කිරීම වඩා er ානවන්ත බව මම පිළිගත යුතුය.
trash-cliඑකම දේ කරයි . gvfs-trashgvfs
find . -name "*.bak" -type fපෙන්වයි trash *.bak. ඇත්තටම ඔබ අදහස් කළේ එයද? ඔබට ඩිරෙක්ටරි කුණු කූඩයට trashහෝ සමඟ ගෙන යා හැකිය gvfs-trash, නමුත් trash *.bakඑය ගෙන යන්නේ ලිපිගොනු සහ නාමාවලි පමණක් වන අතර ඒවා අවසන් .bakවන්නේ වත්මන් නාමාවලියෙහි ය. කවචය පුළුල් *.bakවන බැවින් තමන් විසින්ම නම් කර නොමැති උප බහලුම්වල ගොනු trash *.bakවලට එය බලපාන්නේ .bakනැත .bak.
ls *.bak(මම හිතන්නේ ඔබ අදහස් කළේ) කුණු කසළ ලැයිස්තුගත trash *.bakකරයි. යටින් ඇති ඕනෑම ලිපිගොනු find . -name '*.bak' -xtype f -exec trash {} +කුණු කූඩයට දමයි . එයට අන්වර්ථයක් භාවිතා කළ නොහැක, එබැවින් ඒ වෙනුවට ස්ථාපනය කරන්න හෝ ලියන්න . මෙන්න උදාහරණයක්. ලිපිගොනු සහ ලිපිගොනු ගොනු වලට තෝරයි, නමුත් ෆෝල්ඩර නොවේ. ෆෝල්ඩර ද මකා දැමීමට , භාවිතා කරන්න , එය නාමාවලි තුළ ඇති ගොනු වල දෝෂ මඟහරවා ගනී . කරුණාකර ඔබේ පිළිතුරේ මේ කිසිවක් භාවිතා කිරීමට නිදහස් වන්න. .bak.trash-cligvfs-trash -xtype f.bak find . -name '*.bak' -execdir trash {} +cannot trash non existent.bak.bak
සලකා බැලූ නම හෝ පෝස්ට්ෆික්ස් සහිත සියලුම ලිපිගොනු පුනරාවර්තනය කරන්න:
find . -name '*.pyc' -type f -delete
සලකා බැලූ නම සහිත සියලුම නාමාවලි පුනරාවර්තන ලෙස මකන්න:
find ~ -path '*/__pycache__/*' -delete
find ~ -type d -name '__pycache__' -empty -delete
තරමක් අඩු තදින් පාලනය කළ නමුත් තනි පේළියක:
find ~ -path '*/__pycache__*' -delete
[ සටහන ]:
dනාමාවලි විකල්පය වන අතර fඑය ගොනු විකල්පයකි.
ඔබ git repo තුළ සිටී නම්, ඔබට මෙය භාවිතා කළ හැකිය:
git clean -fdx
මෙය .gitignore හි සොයා නොගත් ගොනු සහ ගොනු මකා දමයි.
ඔබට ලිපිගොනු මකා දැමීමට පෙර ලැයිස්තුව පරීක්ෂා කිරීමට අවශ්ය නම්, ඔබට එය ප්රතිරාවය කළ හැකිය.
find . -name "*.bak" -type f | xargs echo rm -rf
මෙය xargs හරහා rm විධානයට නල කර ඇති සෙවුම් ප්රති results ල ලැයිස්තුගත කරනු ඇත. ලැයිස්තුව ගැන ඔබට සහතික වූ පසු ඔබට ඉහත විධානයෙහි දෝංකාරය අතහැර දැමිය හැකිය.
find . -name "*.bak" -type f | xargs rm -rf
-print0 | xargs -0කෝන්කේස් ලිපිගොනු හැසිරවීමට එකතු කිරීම හොඳ පුරුද්දකි , උදාහරණ test'sමඟින් ඔබට ලබා දෙයි xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 optionහෝ නව රේඛා සහිත ගොනු නාම කැඩී යනු ඇත.