.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 rm
SE හා සම්බන්ධ මේ ප්රශ්නයද බලන්න:
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-trash
gvfs මත රඳා පැවැතීමට තොරව.
ඒ නිසා:
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-trash
gvfs
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-cli
gvfs-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
හෝ නව රේඛා සහිත ගොනු නාම කැඩී යනු ඇත.