විධාන රේඛාවක් සහිත ෆෝල්ඩරයක සිට වෙනත් ෆෝල්ඩරයකට සියලු ගොනු ගෙන යන්නේ කෙසේදැයි දැන ගැනීමට මම කැමතියි.
මම මගේ බාගැනීම් ෆෝල්ඩරයේ සිටින බව කියමු. සියලුම ලිපිගොනු නම ලිවීමකින් තොරව මගේ වීඩියෝ ෆෝල්ඩරයට ගෙන යාමට මා කැමති ගොනු 100 ක් ඇත.
විධාන රේඛාවක් සහිත ෆෝල්ඩරයක සිට වෙනත් ෆෝල්ඩරයකට සියලු ගොනු ගෙන යන්නේ කෙසේදැයි දැන ගැනීමට මම කැමතියි.
මම මගේ බාගැනීම් ෆෝල්ඩරයේ සිටින බව කියමු. සියලුම ලිපිගොනු නම ලිවීමකින් තොරව මගේ වීඩියෝ ෆෝල්ඩරයට ගෙන යාමට මා කැමති ගොනු 100 ක් ඇත.
Answers:
ටර්මිනලයක් විවෘත කර මෙම විධානය ක්රියාත්මක කරන්න:
mv -v ~/Downloads/* ~/Videos/
එය සියලුම ගොනු සහ ෆෝල්ඩර බාගැනීම් ෆෝල්ඩරයේ සිට වීඩියෝ ෆෝල්ඩරයට ගෙන යනු ඇත.
සියලුම ලිපිගොනු ගෙනයාමට, නමුත් ෆෝල්ඩර නොවේ:
සියලුම ගොනු (නමුත් ෆෝල්ඩර නොවේ) බාගැනීම් ෆෝල්ඩරයේ සිට වීඩියෝ ෆෝල්ඩරයට ගෙන යාමට ඔබ කැමති නම්, මෙම විධානය භාවිතා කරන්න
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
බාගැනීම් ෆෝල්ඩර වලින් ගොනු පමණක් ගෙනයාමට, නමුත් උප ෆෝල්ඩර වලින් නොවේ:
බාගැනීම් ෆෝල්ඩරයෙන් සියලුම ගොනු ගෙනයාමට ඔබට අවශ්ය නම්, නමුත් බාගැනීම් ෆෝල්ඩරයේ ඇති ෆෝල්ඩර තුළ කිසිදු ලිපිගොනු නොමැති නම්, මෙම විධානය භාවිතා කරන්න:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
මෙහි, -maxdepth
විකල්පය මඟින් ගැඹුරින් සොයා ගැනීමට උත්සාහ කළ යුතු බව නියම කරයි, 1
එයින් අදහස් වන්නේ සොයා ගැනීමේ විධානයෙහි දක්වා ඇති නාමාවලිය පමණි. ඔබ භාවිතා කරන්න උත්සාහ කරන්න පුළුවන් 2
, 3
ද පරීක්ෂා කිරීමට.
සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා උබුන්ටු සොයාගත් පිටුව බලන්න
-print0 | xargs -0 mv -t ~/Videos
වඩාත් කාර්යක්ෂමව කළ හැක්කේ -exec mv -t ~/Videos \{\} \+
:-)
mv -v ~/Downloads/* ~/Videos/
සැඟවුණු ලිපිගොනු සඳහා ක්රියා නොකරයි
mv ~/Downloads/* ~/Videos
එය ඔබට අවශ්ය නාමාවලියෙහි උප ෆෝල්ඩර ඇතුළු සියලුම ගොනු ගෙන යනු ඇත mv
. ඔබට cp
(පිටපත් කිරීමට) හෝ rm
(ඉවත් කිරීමට) අවශ්ය නම් ඔබට උප -r
ෆෝල්ඩර ඇතුළත් කිරීමට (පුනරාවර්තන) විකල්පය අවශ්ය වේ.
mv
ඇතුළත් කිරීමට පුනරාවර්තන විකල්පයක් අවශ්ය නොවේ. යමෙකුට එය නැවත නම් කිරීම සඳහා ද භාවිතා කළ හැකිය.
සරල අවස්ථාව සඳහා:
mv ~/Downloads/* ~/Videos
ඔබට තිත් (සැඟවුණු) ගොනු ගෙනයාමට අවශ්ය නම්, ඩොට්ග්ලොබ් ෂෙල් විකල්පය සකසන්න .
shopt -s dotglob
mv ~/Downloads/* ~/Videos
මෙය ෂෙල් විකල්ප කට්ටලය අතහැර යයි.
එක් වරක් ඩොට්ග්ලොබ් භාවිතය සඳහා, විධාන උපසිරැසියකින් ධාවනය කරන්න:
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
(shopt -s dotglob; mv ~/Downloads/* ~/Videos)
පමණක් ගමන් කරයි (කප්පාදු) (සැඟවුණු ගොනු ඇතුළුව) අන්තර්ගතය. මෙම අවස්ථාවේදී, මූලාරම්භය සහ ගමනාන්ත ෆෝල්ඩර දෙකම දැනටමත් පැවතිය යුතුය. අවසානයේදී, මූල නාමාවලිය හිස් වේ.
rsync
උදාහරණයක් ලෙස භාවිතා කිරීමෙන් එය කළ හැකිය :
rsync -vau --remove-source-files src/ dst/
කොහේද:
-v
,--verbose
: වාචිකතාව වැඩි කරන්න.
-a
,--archive
: සංරක්ෂිත මාදිලිය; සමානයන්-rlptgoD
(කිසිදු-H
,-A
,-X
).
-u
,--update
: ග්රාහකයේ නවතම ගොනු මඟ හරින්න.
--remove-source-files
මාරුවීමේ කොටසක් වන සහ ලැබීමේ පැත්තේ සාර්ථකව අනුපිටපත් කර ඇතිrsync
ලිපිගොනු (නාමාවලි නොවන) යන්න යවන පැත්තෙන් ඉවත් කිරීමට මෙය කියයි .
ඔබ වරප්රසාද ලබාගෙන ඇත්නම්, sudo
විභව අවසර ගැටළු ඉක්මවා යාමට උපසර්ගය .
mv
ගොනුවක් නැවත නම් කිරීම සඳහා ඔබ විධානය භාවිතා කරන්නේ කෙසේද යන්න මෙන් අන්තර්ගතයක් සහිත හෝ නැති නාමාවලියක් එහි නව නමට ගෙන යාම :
mv -T dir1 dir2
කොහේද:
-T
ගමනාන්තය සාමාන්ය ගොනුවක් ලෙස සලකයිdir1
නාමාවලියෙහි මුල් නම වේdir2
යනු නාමාවලියෙහි නව නමයිසැ.යු: dir2
පැවතිය යුතු නැත.
මෙය යමෙකුට බොහෝ කාලයක් ඉතිරි කර දෙනු ඇතැයි මම විශ්වාස කරමි, මෙයට පෙර, මම නව නම සහිත නාමාවලියක් නිර්මාණය කර ඩිරෙක්ටරියේ අන්තර්ගතය කලින් නිර්මාණය කළ නාමාවලියට ගෙන යන්නෙමි.
උප බහලුම් සඳහා භාවිතා කරන්න
ඉලක්කගත නාමාවලියෙහි උප ෆෝල්ඩරයක බොහෝ ගොනු සුරකින විට මෙම විධානය ප්රයෝජනවත් වේ Downloads/mp4
. මෙම උදාහරණයේ දී, ධාවන mv -T Downloads/mp4 Videos
හේතු වනු ඇත mp4
වෙමින් නමම ඉවත් සහ සියලු ගොනු තුල අඩංගු වීඩියෝ ෆෝල්ඩරය වෙත ගෙන ඇත.
dir1
ඉවත් කිරීමට හේතු වන බව පෙන්වීමට මම මෙම පිළිතුරෙහි උදාහරණයක් එක් කළෙමි . මෙම පූර්වාරක්ෂාව හැරුණු විට, මෙම පිළිතුර දෛනික භාවිතය සඳහා හොඳ දෙයක් සටහන් කර ඇත.
mv fileA fileB
නමුත් -T
මෙම අවස්ථාවේදී ධජය ගමනාන්තය / නාමාවලිය ගොනුවක් ලෙස සලකන අතර එය නැවත නම් කරයි.
භාවිත
mv -v ~/rootfolder/branch/* ~/rootfolder
මම හිතනවා මේක උදව් වෙයි කියලා. මොකද මට එකම වේදනාවක් ඇති වූ අතර මගේ වැරැද්ද නිවැරදි කිරීමට බොහෝ කාලයක් නාස්ති විය.
mv source_path/* destination_path/
මෙහිදී ඔබ කප්පාදුව සහ *
ප්රභව මාර්ගයෙන් පසු ඉදිරිපත් කළ යුතු අතර එමඟින් සම්පූර්ණ මූලාශ්ර නාමාවලිය වෙනුවට source_path තුළ ගොනු ගෙන යනු ඇත.
උදාහරණයක්: mv /home/username/test/* /home/username/test2/
ඉහත විධානය මඟින් ප්රභව නාමාවලියෙහි ඇති සියලුම ගොනු (ඒවා සඟවා නොමැති නම්) ගමනාන්ත නාමාවලියට ගෙන යයි.
cd folderNamehere
pwd
. මෙය ඔබට ගෙනයාමට අවශ්ය නාමාවලිය මුද්රණය කරනු ඇත.cd folderNamehere
mv *.* typeAnswerFromStep2here
එමඟින් සියලුම ලිපිගොනු අනෙක් නාමාවලිය වෙත ගෙන යනු ඇත.
foo.txt
, bar.
සහ bar
දෙකම bar.
හා bar
ගෙන කළ නොහැකි වනු ඇත. *
ඒ වෙනුවට භාවිතා කිරීම ඒ ගැන *.*
සැලකිලිමත් වේ. නමුත් අවස්ථා දෙකේදීම, සැඟවුණු ලිපිගොනු ගෙන .foobar
යනු නොලැබේ.
උත්සහ කරන්න
find ~/Desktop -type f -iname "*.mp4" -exec mv {} ~/Videos \;
-type තර්කය සමඟ ටයිප් කරන්න -type ඔබට ගොනුව ටයිප් කළ හැකිය. මෙම ප්රකාශය මධ්යන්ය ගොනුව වේ. -d භාවිතා කිරීමෙන් නාමාවලිය අදහස් වේ.
-iname: ගොනුවක් සෙවීම සඳහා වඩාත් සුලභ හා පැහැදිලි ක්රමය වන්නේ එහි -name තර්කය භාවිතා කිරීමයි. එහි සිද්ධි සංවේදීතාව පිළිබඳව ඔබට විශ්වාස නැත්නම් ඔබට -iname තර්කය භාවිතා කළ හැකිය
mv}} සහ අවසානයේ ඉලක්ක නාමාවලිය නියම කර mv}} තර්කය භාවිතා කරමින් ලිපිගොනු එහාට මෙහාට ගෙනයන්න
තවත් එක් පිළිතුරක් එක් කිරීමට අවශ්ය විය. ඔබට දැනටමත් ගොනු ඉවත් කිරීමට අවශ්ය ෆෝල්ඩරයේ තිබේ නම්, ඔබට මෙය කළ හැකිය:
mv * ~/Videos
files
නමුත් මිනිසුන් ඔබට පමණක්files
නොව චලනය වන ආකාරය පෙන්වයිfolders
. ඒක හරිද?