මම ළඟම ඇති දෙයයි
# rm /path/to/directory/*.*
නමුත් දිගුවක් නොමැති ගොනු සඳහා එය ක්රියා නොකරයි ...
මම ළඟම ඇති දෙයයි
# rm /path/to/directory/*.*
නමුත් දිගුවක් නොමැති ගොනු සඳහා එය ක්රියා නොකරයි ...
Answers:
ලිනක්ස් දිගු භාවිතා නොකරයි. නමට දිගුවක් තිබිය යුතුද යන්න තීරණය කිරීම ගොනුවේ නිර්මාතෘගේ වගකීම වේ. ලිනක්ස් පළමු බයිට් කිහිපය දෙස බලන්නේ එය කුමන ආකාරයේ ගොනුවක් සමඟද යන්න සොයා ගැනීමටය.
නාමාවලි භාවිතයේ සැඟවී නැති සියලුම ගොනු ඉවත් කිරීමට *:
rm /path/to/directory/*
කෙසේ වෙතත්, මෙය එක් එක් උප බහලුම සඳහා දෝෂයක් පෙන්වනු ඇත, මන්ද මෙම ප්රකාරයේදී ගොනු මකා දැමීමට පමණක් අවසර ඇත.
නාමාවලි භාවිතයේදී සැඟවී නැති සියලුම ගොනු සහ උප නාමාවලි (ඒවායේ සියලුම අන්තර්ගතයන් සමඟ) ඉවත් කිරීම සඳහා:
rm -r /path/to/directory/*
* සැඟවුණු ලිපිගොනු සහ නාමාවලි යනු .
(තිත) අක්ෂරයෙන් ආරම්භ වන අය , උදා: .hidden-file
හෝ .hidden-directory/
. Bash හි, dotglob
විකල්පය (පෙරනිමියෙන් අක්රිය) සකසා rm
ඇත්නම් , සැඟවුණු ලිපිගොනු වලද ක්රියා කරනු ඇති බව සලකන්න, මන්ද ඒවා *
ගොනු නාම තර්ක ලැයිස්තුවක් සැපයීම සඳහා කවචය මඟින් පුළුල් කළ විට ඒවා ඇතුළත් වන බැවිනි .
shopt -s dotglob
වීමට පෙර සැඟවුණු ලිපිගොනු මකා දැමීමට ඔබට අවශ්ය නම්rm (...)
all files
;) *.*
අඩංගු සියළුම ගොනු අදහස් .
නාමයෙන් කොහේ හරි
*a*
අක්ෂර ශුන්ය හෝ වැඩි ගණනක් අදහස් වන අතර ඉන්පසු අක්ෂර ශුන්ය හෝ වැඩි ගණනක් අනුගමනය කරයි a
. එය ගොනු නාමය ගැලපෙන බව happy
, apple
, a
හෝ la
.
rm -r /path/to/directory
ඩිරෙක්ටරියෙන් මිදෙනවා හැර මම දැන් භාවිතා කර ඇත්තෙමි . අවම වශයෙන් මේ ආකාරයෙන් ඔබට සැඟවුණු ලිපිගොනු ඉවත් කළ හැකිය
ෆෝල්ඩරය එහි සියලුම අන්තර්ගතයන් ඉවත් කිරීමට ( සියලුම අභ්යන්තර ෆෝල්ඩර ඇතුළුව ):
rm -rf /path/to/directory
ෆෝල්ඩරයේ සියලුම අන්තර්ගතයන් ඉවත් කිරීම සඳහා ( සියලුම අභ්යන්තර ෆෝල්ඩර ඇතුළුව ) නමුත් ෆෝල්ඩරයම නොවේ:
rm -rf /path/to/directory/*
හෝ
rm -rf /path/to/directory/{*,.*}
සැඟවුණු ලිපිගොනු / නාමාවලි ද ඉවත් කර ඇති බවට ඔබට සහතික වීමට අවශ්ය නම්.
ෆෝල්ඩරයක් තුළ ඇති සියලුම "ගොනු" ඉවත් කිරීමට ( අභ්යන්තර ෆෝල්ඩර ඉවත් නොකිරීම ):
rm -f /path/to/directory/{*,.*}
අවවාදයයි : ඔබේ මාර්ගයේ ඉඩ තිබේ නම්, සෑම විටම මිල ගණන් භාවිතා කිරීමට වග බලා ගන්න.
rm -rf /path/to the/directory/*
වෙනම rm -rf
ඇමතුම් 2 කට සමාන වේ :
rm -rf /path/to
rm -rf the/directory/*
මෙම ගැටළුව මඟහරවා ගැනීම සඳහා, ඔබට '
තනි උපුටා දැක්වීම් '
( ෂෙල් විචල්යයන් පුළුල් නොකරයි ) හෝ "
ද්විත්ව උපුටා දැක්වීම් "
( ෂෙල් විචල්යයන් පුළුල් කරයි ) භාවිතා කළ හැකිය:
rm -rf "/path/to the/directory/"*
කොහෙද:
rm
- " ඉවත් කිරීම " යන්නෙන් අදහස් කෙරේ-f
- " බලය " යන්නෙන් අදහස් කරන්නේ ඔබට ලේඛනාගාරයක් ඉවත් කිරීමට අවශ්ය නම් ඔබෙන් විමසීමට / විමසීමට අකමැති විට එය ප්රයෝජනවත් වේ.-r
- “ පුනරාවර්තන ” යන්නෙන් අදහස් වන්නේ ඔබට සෑම ෆෝල්ඩරයක්ම පුනරාවර්තනය වී සියල්ල ඉවත් කිරීමට අවශ්ය බවයි.rm -rf /path/to/directory/*
ෆෝල්ඩරයේ සැඟවුණු ගොනුවක් ඉවත් නොකරයි .htaccess
. සමහර විට rm -rf /path/to/directory/.
? එය උත්සාහ කර නැත.
rm -rf /path/to/directory/.*
නිශ්චිත නාමාවලියෙහි සැඟවුණු ගොනුව (ය) පමණක් මකා දමයි. @ රින්ස්වින්ඩ්ගේ පිළිතුර පිළිබඳ @ danjjl ගේ අදහස දෙස, සැඟවුණු ලිපිගොනු මකා දැමීමට, ධාවනය shopt -s dotglob
වීමට පෙර ධාවනය කරන්න rm -rf /path/to/directory/*
.
rm -rf /path/to/directory/.*
මගේ පද්ධතියේ ඇති අයිතම මකා දැමීමට හේතු විය /path/to
. වාසනාවකට මෙන්, මම මගේ සම්පූර්ණ දත්ත වෙනම තැටියකට උපස්ථ කර ඇත. rm -rf /path/to/directory/.*
ඔබ ඔබේ මුළු පරිගණකයම වෙනම / ආරක්ෂිත ස්ථානයකට උපස්ථ කර ඇත්නම් මිස විධානය නිකුත් නොකරන්නැයි අමුතුවෙන් කිව යුතු නැත !
නාමාවලියෙහි ඇති සියලුම ගොනු ඉවත් කිරීමට (සැඟවුණු ගොනු සහ උප බහලුම් ඇතුළුව) ධාවනය කරන්න:
rm -rf /path/to/directory/{*,.*}
./
හා ../
, නමුත් එය තවමත් සඟවා ගොනු මැකීමට ඇත.
rm -r $(pwd)/{*,.*}
ඔබට / path / to / බහලුමේ ඇති ගොනු පමණක් මකා දැමීමට අවශ්ය නම් ඔබට කළ හැකිය
find /path/to/directory -type f -print0| xargs -0 rm
හෝ
find /path/to/directory -type f -exec rm '{}' \;
ඔබට බර පැටවීම කළ හැකිය find
, වාසිය නම් ඔබට සොයාගත් දේ නල මාර්ගයකින් තොරව ලැයිස්තු ගත කළ හැකි වන අතර rm
එමඟින් ඔබ ආරම්භ කිරීමට පෙර මකා දැමිය යුතු දේ ඔබට දැකගත හැකිය.
GNU find
ලෙස -delete
සංජානන. ඔබ තවමත් භාවිතා කිරීමට අවශ්ය නම් -exec
, ආදේශ \;
සමග +
රැස් කරනු ඇත rm
ඇමතුම් එකට, කාර්යක්ෂමතාව වැඩි.
නාමාවලියක ඇති සියලුම ගොනු සහ නාමාවලි ( සැඟවුණු ඒවා ඇතුළුව ) මකා දැමීමට , ඔබට පහත සඳහන් දෑ උත්සාහ කළ හැකිය:
ෆෝල්ඩරය මකා දමා නැවත ප්රතිනිර්මාණය කරන්න
rm -rf dir_name && mkdir dir_name
භාවිත find
find dir_name -mindepth 1 -delete
මෙහිදී අපි -mindepth 1
dir_name නාමාවලිය බැහැර කිරීමට නියම කරමු .
පහත සබැඳිය දෙස බලන්න:
/unix/12593/how-to-remove-all-the-files-in-a-directory
ඔබට සියලු උප බහලුම් සහ නාමාවලියම ඉවත් කිරීමට අවශ්ය නම්, ඔබට භාවිතා කළ හැකිය rm -rf /path/to/directory
. නමුත් නැවත එබීමට පෙර සෑම විටම ඔබේ රේඛාව දෙවරක් පරීක්ෂා කරන්න, rm -rf
බොහෝ විනාශයන් ද ඇති කළ හැකිය, උදා: ඔබ සුපර් යූසර් අවසරයන් තිබියදී පළමු කප්පාදුවෙන් පසුව අහම්බෙන් ඉඩක් ඇතුල් කළහොත් ...
මම මෙය මා විසින්ම සොයන විට මෙම ප්රශ්නය නිරන්තරයෙන් ගූගල් හි ඉහළින්ම ඇති බැවින්:
අනෙක් පිළිතුරු විවිධ ගැටළු වලින් පීඩා විඳිති:
ඒවායින් සමහරක් ඇතුළත් වන .
අතර ..
ඒවා is ෝෂාකාරී, ව්යාකූල සහ කරදරකාරී ය.
ඒවායින් සමහරක් සැඟවුණු ලිපිගොනු අමතක කරයි (තිතක් සමඟ ආරම්භ වන ගොනු).
නාමාවලි මකා දැමීමට ඉඩ දීම සඳහා ඒවා නිවැරදි (ගැඹුරුම-පළමු) අනුපිළිවෙලින් මකා නොදමනු ඇත.
ඒවා බොහෝ විට නුසුදුසු වෙනත් (සවිකර ඇති) ගොනු පද්ධති වලට බැස යයි.
අමතර පරාමිතීන් සමඟ ඒවා නිසියාකාරව දිගු කිරීම දුෂ්කර ය (පහත වැඩි විස්තර).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
-xdev
සවි කිරීම් වලට බැසීම වැළැක්වීම සඳහා මම තර්කයක් එක් කළ බව සලකන්න ( /proc
ආදිය).
-depth
හෝ -delete
?මේ සඳහා මිනිසුන් නිරන්තරයෙන් මාව පහත් කොට සලකන නමුත්, එම ක්රමවල අවාසියක් ඇත: -prune
උප බහලුමක් (වැඩි ගැටළු හඳුන්වා නොදී) ඇතුළත් කිරීමට ඉඩ දිය හැකි තරම් ඒවා විස්තාරණය කළ බවක් නොපෙනේ . මෙම ක්රමයට වෙනස්ව, ඔබට ඇතුළු කළ හැකිය
-not \( -path "${DIR}/subdir" -prune \)
එහි අන්තර්ගතය මකා දැමීමෙන් -mindepth
බැහැර කිරීමට තර්කයට පෙර subdir
.
-depth
ධජයක් ඇත find
.
-delete
සමගfind
? -delete
ගැඹුර-පළමුවැන්නයි. ඔබ මේ වන විටත් පොසික්ස් නොවන බව උපකල්පනය find
කර ඇත -printf
, එබැවින් ඔබත් භාවිතා කළ හැකිය-delete
-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... නමුත් මගේද ? මන්ද?
ඔබට cd
ඩිරෙක්ටරියට ඇතුළු වී rm *.*
ඔබට මතක නම් ඩොස් හි මෙන් විධානය ක්රියාත්මක කරන්න.