Hogyan lehet egyszerre több fájlt áthelyezni egy adott célkönyvtárba?

119

Van egy csomó fájl egy könyvtárban (és sok más fájllal együtt), amelyet szeretnék mozgatni.

Szerencsére az összes mozgatni kívánt fájl tartalmaz egy bizonyos azonosítót a nevükben, így als | grep IDENTIFIER -ot tudok megadni a fájlok pontos listájának megjelenítéséhez.

De hogyan tudom végrehajtani a (z)mv file /path/to/dest/folder/ -ot egyszerre, és nem egyenként (sok fájlt kell mozgatni)?

    
készlet gilad hoch 08.11.2012 14:13
forrás

11 válasz

86

HaABC-IDENTIFIER-XYZ.ext vagyIDENTIFIER-XYZ.xml -ot szeretne mozgatni, használhatja a következőket:

mv *IDENTIFIER* ~/YourPath/

* az nulla vagy több karakter helyettesítő karaktere, ez nulla vagy több karakter , majdIDENTIFIER, majd nulla vagy több karakterek .

Ez a tartalmazza a megadottIDENTIFIER fájlt.

    
válasz adott Evandro Silva 08.11.2012 14:33
forrás
169

Használhatsz

mv -t DESTINATION file1 file2 file3

és

mv -t DESTINATION 'ls|grep IDENTIFIER'

működik, de nem biztos benne, hogy az mv többször meghívott-e vagy sem, mivel a grep új sorokat ad ki minden egyes mérkőzéshez.

    
válasz adott tuomaz 14.11.2012 12:07
forrás
21

Használhatja a helyettesítő adatokat .

Példa: A .doc kiterjesztésű összes fájl áthelyezése

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

Ez az aktuális könyvtár alatt lévő összes doc fájlt az adott célállomásra mozgatja.

Szerkesztés

A hozzászóláshoz.

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

    
válasz adott Achu 08.11.2012 14:21
forrás
16

Ha olyan irreleváns fájlokat szeretnél áthelyezni (amelyek nem szerepelnek a nevekben és típusokban), akkor azt teheted, ahogy Mr. Rajanand mondta: először menjen a könyvtárba, amely tartalmazza a mozgatni kívánt fájlokat

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

Ha a fájlok különböző könyvtárakban vannak szétszórva, csak a mozgás parancs

    
válasz adott Ismail AL-taharwa 26.03.2014 05:03
forrás
10

A judaz technikáját használom, de enyhén módosított:

mv file1 file2 file3 -t DESTINATION

Ezt könnyebb megjegyezni, és nehezebb felcsavarni, mivel ugyanazt a rendelést használja, mint a vanília mv művelet:

mv file1 DESTINATION
    
válasz adott Blake Frederick 20.01.2015 17:11
forrás
7

Használja ezt a parancsot:

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

Az ls azonban nem ajánlott ilyen felhasználásra. Használd találd parancsot.

    
válasz adott ignite 08.11.2012 14:44
forrás
5

Ha annyi fájlt szeretne mozgatni, akkor valójában túl sok amv parancshoz (vagy más olyan parancsokhoz, mint arm). Javasolom axargs használatával, hogy minden egyes fájlt külön-külön mozgasd a hurokhoz hasonló módon. Ennek egyik módja a következő:

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

Als -1 (mínusz egy) biztosítja, hogy minden egyes sorban csak egy fájlnév található. Ha als parancsra rejtett álnevek vannak, akkor több fájlnevet is meg lehet adni egyetlen sorban, és véletlenül áthelyezhetsz egy fájlt, amelyet nem kívánsz mozgatni.

    
válasz adott AggieBill 14.11.2012 11:05
forrás
2

Az ls kimenetét használhatja az mv commnad

bemenetre

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

A$() közötti parancs visszaküldi a keresésnek megfelelő fájlnevek listáját, és megadható az mv parancs paramétereként.

    
válasz adott Fuad Saud 13.11.2012 20:38
forrás
2
find -type f -name "[range]" -exec mv {} target-directory ';'

Ez a parancs mozgatja a fájlneveket bármilyen mintával / tartománygal a cél-könyvtárhoz.

pl.

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

a fájlokat olyan fájlokkal fogja áthelyezni, mint afile1, afile2 ...file50000 és atarget-directory.

    
válasz adott user734124 07.09.2017 16:51
forrás
2

Ha a fájlok ugyanabban a könyvtárban vannak, akkor

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

(Ubuntu 16.04 tesztelése)

    
válasz adott Sruli 01.12.2017 10:19
forrás
1

Ezzel a paranccsal több fájlt lehet mozgatni.

mv SourceFilenames ~DestinationPath

    
válasz adott Rajanand 14.11.2012 11:13
forrás