Jak přesunout více souborů najednou do konkrétního cílového adresáře?

119

Mám spoustu souborů v nějakém adresáři (spolu s mnoha dalšími soubory), které chci přesunout.

Naštěstí se všechny soubory, které chci přesunout, nacházejí ve jménu určitého identifikátoru, takže mohuls | grep IDENTIFIER získat přesný seznam souborů, které se mají přesunout.

Ale jak mohu provéstmv file /path/to/dest/folder/ najednou, a ne jeden po druhém (existuje mnoho souborů, které se mají přesunout)?

    
dané gilad hoch 08.11.2012 14:13

11 odpovědí

86

Pokud chcete přesunoutABC-IDENTIFIER-XYZ.ext neboIDENTIFIER-XYZ.xml, můžete použít:

mv *IDENTIFIER* ~/YourPath/

* je zástupná značka pro nula nebo více znaků , znamená to nula nebo více znaků , následujeIDENTIFIER, následuje nula nebo více znaků .

Přesune všechny soubory, které obsahují zadanéIDENTIFIER.

    
odpověděl Evandro Silva 08.11.2012 14:33
169

Můžete použít

mv -t DESTINATION file1 file2 file3

a

mv -t DESTINATION 'ls|grep IDENTIFIER'

funguje, ale nejsem si jistý, zda je mv vyvoláno vícekrát nebo ne, protože grep vygeneruje nový řádek pro každý zápas.

    
odpověděl tuomaz 14.11.2012 12:07
21

Můžete použít zástupné znaky .

Příklad: Chcete-li přesunout všechny soubory s příponou .doc

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

Tím se přesune celý soubor doc pod aktuálním adresářem do konkrétního cíle.

Upravit

Chcete-li odpovědět na komentář.

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

    
odpověděl Achu 08.11.2012 14:21
16

Pokud chcete přesunout soubor irelevantních souborů (žádný společný vzorec v názvech a typech), můžete to udělat, jak řekl pan Rajanand: nejprve přejděte do adresáře obsahujícího soubory, které chcete přesunout

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

Pokud jsou soubory rozptýleny v různých adresářích, stačí zadat cestu pro každý soubor v příkazu přesunu

    
odpověděl Ismail AL-taharwa 26.03.2014 05:03
10

Používám tuomazovu techniku, ale mírně upravená:

mv file1 file2 file3 -t DESTINATION

Myslím si, že to je snazší zapamatovat si a je těžší, protože používá stejnou objednávku jako operace vanilie mv:

mv file1 DESTINATION
    
odpověděl Blake Frederick 20.01.2015 17:11
7

Použijte tento příkaz:

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

Ls se však nedoporučuje pro tento druh použití. Místo toho použijte příkaz find .

    
odpověděl ignite 08.11.2012 14:44
5

Pokud máte k pohybu tolik souborů, můžete mít příkazmv (nebo jiné příkazy jakorm) příliš mnoho. Doporučuji použítxargs k přesunutí každého souboru jednotlivě ve smyčce jako v módě. Jeden způsob, jak se obejít, je:

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

Kódls -1 (mínus jeden) zajišťuje, že na každém řádku je pouze jeden název souboru. Pokud máte skryté aliasy pro příkazls, můžete mít na jednom řádku více názvů souborů a neúmyslně přesunout soubor, který jste neměli v úmyslu přesunout.

    
odpověděl AggieBill 14.11.2012 11:05
2

Výstup z ls můžete použít pro zadání do mv commnad

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

Příkaz mezi$() vrací seznam názvů souborů odpovídajících vašemu vyhledávání a může být poskytnut jako parametr pro příkaz mv.

    
odpověděl Fuad Saud 13.11.2012 20:38
2

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

tento příkaz přesune názvy souborů s libovolným vzorem / rozsahem do adresáře cílů.

např.

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

přesune soubory se jmény jakofile1,file2 ...file50000 totarget-directory.

    
odpověděl user734124 07.09.2017 16:51
2

Pokud jsou soubory ve stejném adresáři, můžete použít

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

(testováno v Ubuntu 16.04)

    
odpověděl Sruli 01.12.2017 10:19
1

Pomocí tohoto příkazu můžete přesunout více souborů.

mv SourceFilenames ~DestinationPath

    
odpověděl Rajanand 14.11.2012 11:13