Mam kilka plików w pewnym katalogu (wraz z wieloma innymi plikami), które chcę przenieść.
Na szczęście wszystkie pliki, które chcę przenieść, zawierają w swoich nazwach określony identyfikator, dzięki czemu mogę ls | grep IDENTIFIER
uzyskać dokładną listę plików do przeniesienia.
Ale jak mogę wykonać mv file /path/to/dest/folder/
od razu, a nie jeden po drugim (jest wiele plików do przeniesienia)?
źródło
mv file1 file2 ... destination
ls
.Możesz używać symboli wieloznacznych .
Przykład: Aby przenieść wszystkie pliki o rozszerzeniu .doc
mv *.doc /path/to/dest/folder/
Spowoduje to przeniesienie całego pliku doc w bieżącym katalogu do określonego miejsca docelowego.
Edytować
Aby odpowiedzieć na komentarz.
mv *.ext *.xml *.txt /path/to/dest/folder/
źródło
ABC-IDENTIFIER-XYZ.ext
a niektóre po prostuIDENTIFIER-XYZ.ext
mają różne rozszerzenia, główniexml
lubproperties
..xml
pliki (na przykład), których nie chcę przenosić.Jeśli chcesz przenieść zestaw nieistotnych plików (brak wspólnego wzorca w nazwach i typach), możesz zrobić tak, jak powiedział pan Rajanand: najpierw przejdź do katalogu zawierającego pliki, które chcesz przenieść
W przypadku, gdy pliki są rozproszone w różnych katalogach, wystarczy podać ścieżkę do każdego pliku w poleceniu move
źródło
Używam techniki tuomaz, ale nieco zmodyfikowanej:
Uważam, że jest to łatwiejsze do zapamiętania i trudniejsze do zepsucia, ponieważ używa tego samego porządku co operacja waniliowa mv:
źródło
mv
nie wspomina o żadnej-t
opcji.Użyj tego polecenia:
Jednak ls nie jest zalecany do tego rodzaju zastosowań. Zamiast tego użyj polecenia find .
źródło
ls
nie jest zalecany do tego rodzaju użytkowania. Jeśli chcesz wyświetlić listę plików, zwłaszcza zgrep
tyłu, użyjfind . -name \*IDENTIFIER\*
.ls
Jeśli masz tyle plików do przeniesienia, możesz mieć ich zbyt wiele dla
mv
polecenia (lub innych poleceń, takich jakrm
). Sugeruję użycie,xargs
aby przenieść każdy plik osobno w pętli jak w modzie. Jednym ze sposobów obejścia tego jest:ls -1
(Minus jeden) zapewnia, że istnieje tylko jedna nazwa pliku na każdej linii. Jeśli masz ukryte aliasy dlals
polecenia, możesz mieć wiele nazw plików w jednym wierszu i przypadkowo przenieść plik, którego nie zamierzałeś przenieść.źródło
Jeśli pliki znajdują się w tym samym katalogu, możesz użyć
(testowany w Ubuntu 16.04)
źródło
to polecenie przenosi nazwy plików o dowolnym wzorze / zakresie do katalogu docelowego.
na przykład.
będzie przenieść pliki o nazwach takich jak
file1
,file2
...file50000
dotarget-directory
.źródło
Możesz użyć wyjścia z ls do wprowadzenia do komendy mv commnad
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
Komenda między
$()
zwraca listę nazw plików pasujących do wyszukiwania, które można podać jako parametr dla komendy mv.źródło
ls
Za pomocą tego polecenia możesz przenosić wiele plików.
mv SourceFilenames ~DestinationPath
źródło
Najłatwiej jest to zrobić
lub katalog
lub zarówno pliki, jak i katalogi
Mam nadzieję że to pomoże
źródło