විධාන රේඛාව භාවිතයෙන් සියලුම ලිපිගොනු එක් ෆෝල්ඩරයක සිට තවත් ෆෝල්ඩරයකට ගෙන යන්නේ කෙසේද?


293

විධාන රේඛාවක් සහිත ෆෝල්ඩරයක සිට වෙනත් ෆෝල්ඩරයකට සියලු ගොනු ගෙන යන්නේ කෙසේදැයි දැන ගැනීමට මම කැමතියි.

මම මගේ බාගැනීම් ෆෝල්ඩරයේ සිටින බව කියමු. සියලුම ලිපිගොනු නම ලිවීමකින් තොරව මගේ වීඩියෝ ෆෝල්ඩරයට ගෙන යාමට මා කැමති ගොනු 100 ක් ඇත.


ඔබ ගමන් කිරීම ගැන විමසන filesනමුත් මිනිසුන් ඔබට පමණක් filesනොව චලනය වන ආකාරය පෙන්වයි folders. ඒක හරිද?
අසාර්

2
Ont හොන්ට්වරි ලෙවෙන්ට් මීට වසරකට පෙර පිළිතුරක් ලබා දුන් අතර එය බොහෝ දුරට හොඳම, පිරිසිදු, සරල බව පෙනේ. ඉතින් එයට ලැබුණේ ඡන්ද 3 ක් පමණි (දැනට ඉහළින් ඇති පිළිතුර සඳහා 262 ට සාපේක්ෂව).
රේ බටර්වර්ත්

Answers:


391

ටර්මිනලයක් විවෘත කර මෙම විධානය ක්‍රියාත්මක කරන්න:

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ද පරීක්ෂා කිරීමට.

සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා උබුන්ටු සොයාගත් පිටුව බලන්න


3
සම්පූර්ණ ඩිරෙක්ටරියක්ම වෙනත් ෆෝල්ඩරයකට ගෙනයාමට ඔබට mv පමණක් භාවිතා කළ හැකිය: mv ෆෝල්ඩරය
Docu

23
FYI ඔබගේ පළමු විධානය ("mv -v ~ / Downloads / * Videos / Videos /") තිත් ගොනු ගෙන නොයන බව මම විශ්වාස කරමි.
මාර්ක් ඩොලිනර්

2
ඔව්, එය .files
අන්වර්

3
සැ.යු. ඔබට -print0 | xargs -0 mv -t ~/Videosවඩාත් කාර්යක්ෂමව කළ හැක්කේ -exec mv -t ~/Videos \{\} \+:-)
artfulrobot

4
mv -v ~/Downloads/* ~/Videos/සැඟවුණු ලිපිගොනු සඳහා ක්‍රියා නොකරයි
FreeLightman

34
mv ~/Downloads/* ~/Videos

එය ඔබට අවශ්‍ය නාමාවලියෙහි උප ෆෝල්ඩර ඇතුළු සියලුම ගොනු ගෙන යනු ඇත mv. ඔබට cp(පිටපත් කිරීමට) හෝ rm(ඉවත් කිරීමට) අවශ්‍ය නම් ඔබට උප -rෆෝල්ඩර ඇතුළත් කිරීමට (පුනරාවර්තන) විකල්පය අවශ්‍ය වේ.


2
මගේ mv විධානයට -R විකල්පයක් නොමැත (උබුන්ටු 14.04).
මාර්ක් ඩොලිනර්

1
Ark මාක් ඩොලිනර්, ඔව්, උප ෆෝල්ඩර mvඇතුළත් කිරීමට පුනරාවර්තන විකල්පයක් අවශ්‍ය නොවේ. යමෙකුට එය නැවත නම් කිරීම සඳහා ද භාවිතා කළ හැකිය.
අලි

මට අවශ්‍ය නොවීය *. තාරකාව භාවිතා නොකර එකම දේ සිදුවිය.
මයික්‍රොෆ් ඩී

Folder / ෆෝල්ඩරයේ නම් උපසර්ගය සැමවිටම ක්‍රියා නොකරයි (අවම වශයෙන්
බාෂ්

ප්‍රභව නාමාවලිය හිස් නම් මෙම විසඳුම දෝෂයක් ලබා දෙනු ඇත.
පියරේ තිබෝල්ට්

19

සරල අවස්ථාව සඳහා:

mv ~/Downloads/* ~/Videos

ඔබට තිත් (සැඟවුණු) ගොනු ගෙනයාමට අවශ්‍ය නම්, ඩොට්ග්ලොබ් ෂෙල් විකල්පය සකසන්න .

shopt -s dotglob
mv ~/Downloads/* ~/Videos

මෙය ෂෙල් විකල්ප කට්ටලය අතහැර යයි.

එක් වරක් ඩොට්ග්ලොබ් භාවිතය සඳහා, විධාන උපසිරැසියකින් ධාවනය කරන්න:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

මා සඳහා සටහන: පසුගිය විකල්පය (shopt -s dotglob; mv ~/Downloads/* ~/Videos) පමණක් ගමන් කරයි (කප්පාදු) (සැඟවුණු ගොනු ඇතුළුව) අන්තර්ගතය. මෙම අවස්ථාවේදී, මූලාරම්භය සහ ගමනාන්ත ෆෝල්ඩර දෙකම දැනටමත් පැවතිය යුතුය. අවසානයේදී, මූල නාමාවලිය හිස් වේ.
පැට්‍රොස්

මෙය පිළිගත් පිළිතුර විය යුතුය
මෙගාර්

12

rsyncඋදාහරණයක් ලෙස භාවිතා කිරීමෙන් එය කළ හැකිය :

rsync -vau --remove-source-files src/ dst/

කොහේද:

-v, --verbose: වාචිකතාව වැඩි කරන්න.

-a, --archive: සංරක්ෂිත මාදිලිය; සමානයන් -rlptgoD(කිසිදු -H, -A, -X).

-u, --update: ග්‍රාහකයේ නවතම ගොනු මඟ හරින්න.

--remove-source-filesමාරුවීමේ කොටසක් වන සහ ලැබීමේ පැත්තේ සාර්ථකව අනුපිටපත් කර ඇති rsyncලිපිගොනු (නාමාවලි නොවන) යන්න යවන පැත්තෙන් ඉවත් කිරීමට මෙය කියයි .

ඔබ වරප්‍රසාද ලබාගෙන ඇත්නම්, sudoවිභව අවසර ගැටළු ඉක්මවා යාමට උපසර්ගය .


1
අවවාදයයි! --delete-after විකල්පය සඳහන් කළ පරිදි ඔබ අපේක්ෂා කළ ආකාරයට ක්‍රියා නොකරයි. සාර්ථක පිටපතකින් පසුව එය ප්‍රභව ලිපිගොනු මකා නොදමනු ඇත ... එය ගමනාන්තයේ ඇති සියලුම ඉතිරි කිරීම් / වෙනත් ගොනු මකා දමයි. (@kenorb සඳහන් කළ පරිදි ... නමුත් මම ප්‍රමාණවත් ලෙස කියවා නැත! DOH)
ජේ මාර්ම්

5

mvගොනුවක් නැවත නම් කිරීම සඳහා ඔබ විධානය භාවිතා කරන්නේ කෙසේද යන්න මෙන් අන්තර්ගතයක් සහිත හෝ නැති නාමාවලියක් එහි නව නමට ගෙන යාම :

mv -T dir1 dir2

කොහේද:

  • -T ගමනාන්තය සාමාන්‍ය ගොනුවක් ලෙස සලකයි
  • dir1 නාමාවලියෙහි මුල් නම වේ
  • dir2 යනු නාමාවලියෙහි නව නමයි

සැ.යු: dir2පැවතිය යුතු නැත.

මෙය යමෙකුට බොහෝ කාලයක් ඉතිරි කර දෙනු ඇතැයි මම විශ්වාස කරමි, මෙයට පෙර, මම නව නම සහිත නාමාවලියක් නිර්මාණය කර ඩිරෙක්ටරියේ අන්තර්ගතය කලින් නිර්මාණය කළ නාමාවලියට ගෙන යන්නෙමි.

උප බහලුම් සඳහා භාවිතා කරන්න

ඉලක්කගත නාමාවලියෙහි උප ෆෝල්ඩරයක බොහෝ ගොනු සුරකින විට මෙම විධානය ප්‍රයෝජනවත් වේ Downloads/mp4. මෙම උදාහරණයේ දී, ධාවන mv -T Downloads/mp4 Videosහේතු වනු ඇත mp4වෙමින් නමම ඉවත් සහ සියලු ගොනු තුල අඩංගු වීඩියෝ ෆෝල්ඩරය වෙත ගෙන ඇත.


1
+1 නිසා Xubuntu 14.04 හි වැඩ කිරීම පරීක්ෂා කර ඇත. මෙම විධානය dir1ඉවත් කිරීමට හේතු වන බව පෙන්වීමට මම මෙම පිළිතුරෙහි උදාහරණයක් එක් කළෙමි . මෙම පූර්වාරක්ෂාව හැරුණු විට, මෙම පිළිතුර දෛනික භාවිතය සඳහා හොඳ දෙයක් සටහන් කර ඇත.
clearkimura

1
"නාමාවලිය එහි නව නමට අන්තර්ගතයෙන් හෝ රහිතව ගෙනයාමට" ඔබට නාමාවලියක් ... නමකට ගෙන යා හැක්කේ කෙසේද? ඒකෙන් කිසිම තේරුමක් නැහැ. "-T ගමනාන්තය සාමාන්‍ය ගොනුවක් ලෙස සලකයි" ගමනාන්තයක් ගොනුවක් වන්නේ කෙසේද? ඔබ අදහස් කරන්නේ නාමාවලියද?
මොනිකා හෙඩ්නෙක්

ඔබ වැනි දෙයක් සමඟ ගොනුවක් එහි නව නමට නැවත නම් කිරීම වැනි ය, mv fileA fileBනමුත් -Tමෙම අවස්ථාවේදී ධජය ගමනාන්තය / නාමාවලිය ගොනුවක් ලෙස සලකන අතර එය නැවත නම් කරයි.
ෆෙයිසායෝ සොනුබි

මා වෙනුවෙන් වැඩ කළා :)
නවීන් කුමාර් V

මෙය පිළිගත් පිළිතුර විය යුතුය.
hmcclungiii

4

භාවිත

mv -v ~/rootfolder/branch/* ~/rootfolder

මම හිතනවා මේක උදව් වෙයි කියලා. මොකද මට එකම වේදනාවක් ඇති වූ අතර මගේ වැරැද්ද නිවැරදි කිරීමට බොහෝ කාලයක් නාස්ති විය.


2
mv source_path/* destination_path/

මෙහිදී ඔබ කප්පාදුව සහ *ප්‍රභව මාර්ගයෙන් පසු ඉදිරිපත් කළ යුතු අතර එමඟින් සම්පූර්ණ මූලාශ්‍ර නාමාවලිය වෙනුවට source_path තුළ ගොනු ගෙන යනු ඇත.

උදාහරණයක්: mv /home/username/test/* /home/username/test2/

ඉහත විධානය මඟින් ප්‍රභව නාමාවලියෙහි ඇති සියලුම ගොනු (ඒවා සඟවා නොමැති නම්) ගමනාන්ත නාමාවලියට ගෙන යයි.


1
  1. විධාන රේඛාවට ගොස් ඔබට එය ගෙනයාමට අවශ්‍ය නාමාවලියට ඇතුළු වන්න cd folderNamehere
  2. වර්ගය pwd. මෙය ඔබට ගෙනයාමට අවශ්‍ය නාමාවලිය මුද්‍රණය කරනු ඇත.
  3. ඉන්පසු සියලුම ලිපිගොනු ඇති නාමාවලියට වෙනස් කරන්න cd folderNamehere
  4. දැන් සියලුම ගොනු වර්ග ගෙනයාමට mv *.* typeAnswerFromStep2here

එමඟින් සියලුම ලිපිගොනු අනෙක් නාමාවලිය වෙත ගෙන යනු ඇත.


3
මෙය කිසිදු දිගුවක් නොමැතිව ගොනු සමඟ නොගැලපේ. උදාහරණයක් වශයෙන්, ෆෝල්ඩරය ගොනු තිබේ නම්: foo.txt, bar.සහ barදෙකම bar.හා barගෙන කළ නොහැකි වනු ඇත. *ඒ වෙනුවට භාවිතා කිරීම ඒ ගැන *.*සැලකිලිමත් වේ. නමුත් අවස්ථා දෙකේදීම, සැඟවුණු ලිපිගොනු ගෙන .foobarයනු නොලැබේ.
ඩෑන්

1

උත්සහ කරන්න

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-type තර්කය සමඟ ටයිප් කරන්න -type ඔබට ගොනුව ටයිප් කළ හැකිය. මෙම ප්‍රකාශය මධ්යන්ය ගොනුව වේ. -d භාවිතා කිරීමෙන් නාමාවලිය අදහස් වේ.

-iname: ගොනුවක් සෙවීම සඳහා වඩාත් සුලභ හා පැහැදිලි ක්‍රමය වන්නේ එහි -name තර්කය භාවිතා කිරීමයි. එහි සිද්ධි සංවේදීතාව පිළිබඳව ඔබට විශ්වාස නැත්නම් ඔබට -iname තර්කය භාවිතා කළ හැකිය

mv}} සහ අවසානයේ ඉලක්ක නාමාවලිය නියම කර mv}} තර්කය භාවිතා කරමින් ලිපිගොනු එහාට මෙහාට ගෙනයන්න


0

තවත් එක් පිළිතුරක් එක් කිරීමට අවශ්‍ය විය. ඔබට දැනටමත් ගොනු ඉවත් කිරීමට අවශ්‍ය ෆෝල්ඩරයේ තිබේ නම්, ඔබට මෙය කළ හැකිය:

mv * ~/Videos

මෙම පිළිතුර දැනට පවතින පිළිතුරේ අනුපිටපතකි: askubuntu.com/a/387727
karel

@karel මෙම පිළිතුර "ඔබ දැනටමත් ෆෝල්ඩරයේ සිටී නම් ඔබට ගොනු පිටතට ගෙනයාමට අවශ්‍යය" යන නඩුව ආවරණය කිරීමට අදහස් කරන අතර එය පෙන්වන විධානය ඒ පිළිතුරේ විධානයට වඩා වෙනස් වේ . මෙම නඩුව ආවරණය වන පරිදි පිළිතුරක් තිබීම ප්‍රයෝජනවත් යැයි යමෙකු සිතුවත් නැතත්, මෙම පිළිතුර එම පිළිතුරේ අනුපිටපතක් නොවේ.
එලියා කගන්

යෙරෙමියා 13: 23 හි දිවියාට තම ලප වෙනස් කළ නොහැකි බව පවසයි.
karel

උපස්ථයට ස්තූතියි @ එලියා කගන්
ජෝන් සොලි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.