නිශ්චිත ගමනාන්ත නාමාවලියකට එකවර ගොනු කිහිපයක් ගෙන යන්නේ කෙසේද?


165

මට ගෙනයාමට අවශ්‍ය සමහර ඩිරෙක්ටරියේ (තවත් බොහෝ ගොනු සමඟ) ගොනු පොකුරක් තිබේ.

වාසනාවකට මෙන්, මට ගෙනයාමට අවශ්‍ය සියලුම ලිපිගොනු ඒවායේ නම්වල නිශ්චිත හඳුනාගැනීමක් අඩංගු වන බැවින් චලනය කිරීමට අවශ්‍ය ls | grep IDENTIFIERලිපිගොනු ලැයිස්තුව ලබා ගැනීමට මට හැකිය .

නමුත්, මම mv file /path/to/dest/folder/එකවර ක්‍රියාත්මක කරන්නේ කෙසේද , එකින් එක නොවේ (ගෙනයාමට ලිපිගොනු ගොඩක් තිබේ)?

Answers:


109

ඔබට චලනය කිරීමට අවශ්‍ය නම් ABC-IDENTIFIER-XYZ.extහෝ IDENTIFIER-XYZ.xml, ඔබට මෙය භාවිතා කළ හැකිය:

mv *IDENTIFIER* ~/YourPath/

*සඳහා ආදේශක වේ ශුන්ය හෝ ඊට වඩා වැඩි අකුරු , මේ මාර්ගයෙන් චරිත ශුන්ය හෝ ඊට වඩා වැඩි විසින් අනුගමනය, IDENTIFIERවිසින් අනුගමනය, ශුන්ය හෝ ඊට වඩා වැඩි අකුරු .

මෙම සියලු ගොනු ඇත අඩංගු වන IDENTIFIERඔබ සඳහන්.


220

ඔබට භාවිතා කළ හැකිය

mv -t DESTINATION file1 file2 file3

හා

mv -t DESTINATION `ls|grep IDENTIFIER`

ක්‍රියා කරයි, නමුත් mv කිහිප වතාවක් ආයාචනා කර ඇත්දැයි හෝ ග්‍රෙප් සෑම තරඟයක් සඳහාම නව රේඛාවක් නිකුත් කරයිදැයි මට විශ්වාස නැත.


7
ලිනක්ස් මත ක්‍රියා කරයි, එය මැක් මත ක්‍රියා කරයිදැයි විශ්වාස නැත
ඇලෙක්සැන්ඩර් මිල්ස්

4
සුළං රැළි සඳහා git හරහා මැක් සහ git bash මත ක්‍රියා කරයි.
බ්‍රැන්ඩ් සොලොවිජ්

14
මැක් (10.11.16 එල් කැපිටන්) මත ක්‍රියා නොකරයි. නමුත් ඔබට ඉලක්ක ෆෝල්ඩරය පිටුපස තැබිය හැකිය, එනම්mv file1 file2 ... destination
ජොනතන් එච්

2
-1 දෙවැනි ප්රවේශය සඳහා එය ඇතුළු ගොනු සඳහා පහත වැටෙනු ඇත ලෙස නව රේඛා
αғsнιη


27

ඔබට ආදේශක කාඩ්පත් භාවිතා කළ හැකිය .

උදාහරණය: .doc දිගුව සහිත සියලුම ගොනු ගෙනයාමට

mv *.doc /path/to/dest/folder/

මෙය වත්මන් නාමාවලිය යටතේ ඇති සියලුම ලේඛ ගොනුව නිශ්චිත ගමනාන්තයට ගෙන යනු ඇත.

සංස්කරණය කරන්න

අදහස් දැක්වීමට පිළිතුරු දීමට.

mv *.ext *.xml *.txt /path/to/dest/folder/


2
නමුත් ගෙන යා යුතු ලිපිගොනු ලැයිස්තුව දිගුව මගින් තීරණය නොවේ. සමහර ලිපිගොනු නම් කර ඇත: ABC-IDENTIFIER-XYZ.extසමහර ඒවා IDENTIFIER-XYZ.extසියල්ලම විවිධ දිගුවන් ඇත, බොහෝ දුරට xmlහෝ properties.
ගිලාඩ් හොච්

@giladhoch සංස්කරණය කළ එක ගැන කුමක් කිව හැකිද?
අචු

ligliadhoch ඔබට grep භාවිතා කිරීම එතරම් පහසු නම්, ඔබට මගේ පිළිතුර ඉහත / පහළින් දැකිය හැකිය.
අවුලුවනු

වෙනත් .xmlලිපිගොනු ඇති බැවින් ක්‍රියා නොකරනු ඇත (නිදසුනක් ලෙස) මට ගෙනයාමට අවශ්‍ය නැත.
ගිලාඩ් හොච්

25

ඔබට අදාළ නොවන ලිපිගොනු සමූහයක් ගෙනයාමට අවශ්‍ය නම් (නම් සහ වර්ගවල පොදු රටාවක් නොමැත) රාජනන්ද් මහතා පැවසූ පරිදි ඔබට කළ හැකිය: පළමුව ඔබට ගෙනයාමට අවශ්‍ය ලිපිගොනු අඩංගු නාමාවලියට යන්න.

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

ලිපිගොනු විවිධ නාමාවලිවල විසිරී ඇත්නම්, ඔබට අවශ්‍ය වන්නේ චලනය වන විධානයෙහි එක් එක් ගොනුව සඳහා මාර්ගය පමණි


මෙය /destination/දැනටමත් පවතින තාක් කල් ක්‍රියාත්මක වේ (මැක් ඕඑස් එක්ස් සහ ඇල්පයින් ලිනක්ස් මත පරීක්ෂා කර ඇත) (සටහන: මෙය මා විසින් මකා දැමූ මගේ පෙර අදහස් දැක්වීමේ නිවැරදි කිරීමකි)
මැට් බ්‍රවුන්

11

මම ටූමාස්ගේ තාක්ෂණය භාවිතා කරමි, නමුත් තරමක් වෙනස් කර ඇත:

mv file1 file2 file3 -t DESTINATION

වැනිලා එම්වී මෙහෙයුමට සමාන ඇණවුමක් භාවිතා කරන බැවින් මෙය මතක තබා ගැනීමට පහසු සහ ඉස්කුරුප්පු කිරීමට අපහසු බව මට පෙනේ:

mv file1 DESTINATION

සඳහා වන මෑන් පිටුවේ විකල්පයක් mvසඳහන් -tනොවේ.
නූමනන්

2
linux.die.net/man/1/mv ඔව් එය එසේ කරයි
geyws

7

මෙම විධානය භාවිතා කරන්න:

mv `ls|grep IDENTIFIER` /path/to/dest/folder  

කෙසේ වෙතත්, මේ ආකාරයේ භාවිතය සඳහා ls නිර්දේශ නොකරයි. ඒ වෙනුවට find විධානය භාවිතා කරන්න .


8
lsමේ ආකාරයේ භාවිතය සඳහා නිර්දේශ නොකරයි. ඔබට ලිපිගොනු ලැයිස්තුගත කිරීමට අවශ්‍ය නම්, විශේෂයෙන් grepපිටුපසින්, භාවිතා කරන්න find . -name \*IDENTIFIER\*.
නොර්ටිකුස්

මෙම පිළිතුර mv හි පෙර විධානයේ ප්‍රතිදානය භාවිතා කරන්නේ කෙසේද යන්න නිරූපණය කිරීම සඳහා පමණි. ප්‍රශ්නයෙහි ls | grep සඳහන් කර ඇති පරිදි, මම එය පිටපත් කළෙමි.
අවුලුවනු

3
OrNorTicUs විසින් ප්‍රකාශ කර ඇති පරිදි, ls භාවිතය වැරදි ලෙස උපදෙස් දෙනු ලැබේ. එසේම, අවකාශයන් සහිත ලිපිගොනු ගැටළුවක් ඇති කළ හැකිය.
වී ලෑන්ඩෝ


6

ලිපිගොනු එකම ඩිරයේ තිබේ නම් ඔබට භාවිතා කළ හැකිය

mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(උබුන්ටු 16.04 හි පරීක්ෂා කර ඇත)


1
මෙය දැනට පවතින පිළිතුරු වලට යමක් එකතු නොකරයි, ඔබ සිතන්නේ නැද්ද?
අතුරුපස

1
එක් එක් ගොනුව සඳහා dir සඳහා සම්පූර්ණ මාර්ගය නියම කිරීමේ අවශ්‍යතාවය ඉවත් කරයි
Sruli

5

ඔබට ගෙනයාමට බොහෝ ලිපිගොනු තිබේ නම් ඔබට ඇත්ත වශයෙන්ම mvවිධානය සඳහා බොහෝ දේ තිබිය හැකිය (හෝ වෙනත් විධානයන් වැනි rm). xargsවිලාසිතා වැනි පුඩුවක් තුළ එක් එක් ගොනුව තනි තනිව ගෙනයාමට මම යෝජනා කරමි . එය මඟ හැරීමට එක් ක්‍රමයක් නම්:

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

මෙම ls -1(ඍණ එක්) එක් එක් රේඛාව මත එකම ගොනු ඇති බව සහතික කරයි. ඔබ lsවිධානය සඳහා සැඟවුණු අන්වර්ථයන් තිබේ නම්, ඔබට එක් පේළියක ගොනු නාම කිහිපයක් තිබිය හැකි අතර ඔබ චලනය කිරීමට අදහස් නොකළ ගොනුවක් නොදැනුවත්වම ගෙනයන්න.


ඔබේ හැඳුනුම්පත පහසුවෙන් ආදේශක කාඩ්පතක් බවට පත් නොකරන විට හෝ වඩාත් සංකීර්ණ රීජෙක්ස් සමඟ grep භාවිතා කිරීමට අවශ්‍ය විට මෙයද ප්‍රයෝජනවත් වේ.
ඇග්ගිබිල්

1
Xargs සඳහා +1. සොයා ගැනීම සෑම විටම පාහේ ls ට වඩා හොඳ සහ ආරක්ෂිතයි. සොයා ගන්න. IDENTIFIER -exec mv {} / path / to / dest / folder \; (පරීක්ෂා නොකළ කේතය) ද. වත්මන් වැඩ කරන නාමාවලිය සඳහා වේ. එම \; ක්‍රියාත්මක කළ යුතු විධානය අවසන් කිරීමයි. ඔබ කරන්නේ කුමක්ද යන්න මත පදනම්ව, එය උප බහලුම් වලට පුනරාවර්තනය වීම වළක්වා ගැනීම සඳහා -maxdepth 1 එකතු කිරීමට සිදුවනු ඇත.
ජෝ

3

ඔබට ls සිට mv commnad වෙත ආදානය කිරීමට ප්‍රතිදානය භාවිතා කළ හැකිය

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

අතර ඇති විධානය මඟින් $()ඔබගේ සෙවුමට ගැලපෙන ගොනු නාම ලැයිස්තුවක් ලබා දෙන අතර එය mv විධානය සඳහා පරාමිතියක් ලෙස සැපයිය හැකිය.



3
find -type f -name "[range]" -exec mv {} target-directory ';'

මෙම විධානය මඟින් ඕනෑම රටාවක් / පරාසයක් සහිත ගොනු නාමයන් ඉලක්ක නාමාවලියට ගෙන යනු ඇත.

උදා.

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

ඒ වගේ ගොනු නාම ගමන් කරනු ඇත file1, file2... file50000වෙත target-directory.


1

මෙම විධානය භාවිතා කිරීමෙන් ඔබට ගොනු කිහිපයක් ගෙන යා හැකිය.

mv SourceFilenames ~DestinationPath


1

පහසුම ක්‍රමය මේ වගේ ය

mv {file1,file2,file3} DESTINATION

හෝ නාමාවලිය

mv {directory1,directory2,directory3} DESTINATION

හෝ ගොනු සහ නාමාවලි දෙකම

mv {file1,file2,file3,directory1,directory2,directory3} DESTINATION

මෙය උපකාරී වේ යැයි සිතමි

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.