Как переместить несколько файлов одновременно в определенный каталог назначения?

У меня есть куча файлов в некотором каталоге (вместе со многими другими файлами), которые я хочу переместить.

К счастью, все файлы, которые я хочу переместить, содержат в своих именах определенный идентификатор, поэтому я могу ls | grep IDENTIFIER получить точный список файлов для перемещения.

Но как я могу выполнить mv file /path/to/dest/folder/ одновременно, а не один за другим (нужно переместить много файлов)?

154
задан 24 January 2018 в 12:47

14 ответов

Если Вы хотите переместиться ABC-IDENTIFIER-XYZ.ext или IDENTIFIER-XYZ.xml, можно использовать:

mv *IDENTIFIER* ~/YourPath/

* подстановочный знак для нуль или больше символов , это означает нуль или больше символов , сопровождаемый IDENTIFIER, сопровождаемый нуль или больше символов .

Это переместит все файлы, которые содержат IDENTIFIER, Вы определили.

100
ответ дан 24 January 2018 в 12:47

Вы могли использовать

mv -t DESTINATION file1 file2 file3

и

mv -t DESTINATION `ls|grep IDENTIFIER`

работы, но я не уверен, вызывается ли mv многократно или не, поскольку grep произведет новую строку для каждого соответствия.

201
ответ дан 24 January 2018 в 12:47

Если у Вас есть столько файлов для перемещения, у Вас могут на самом деле быть слишком многие для mv команда (или другие команды как rm). Я предлагаю использовать xargs для перемещения каждого файла индивидуально в цикл как вид. Один способ двигаться, который должен сделать:

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

ls -1 (минус один) гарантирует, что существует только одно имя файла на каждой строке. При сокрытии псевдонимов для эти ls команда, Вы можете иметь несколько имен файлов на одной строке и непреднамеренно переместить файл, который Вы не намеревались переместить.

5
ответ дан 24 January 2018 в 12:47

Используя эту команду можно переместить несколько файлов.

mv SourceFilenames ~DestinationPath

1
ответ дан 24 January 2018 в 12:47

Можно использовать вывод от ls для ввода в mv commnad

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

команды между $() возвраты список имен файлов, соответствующих поиску, и это может быть обеспечено в качестве параметра для команды mv.

2
ответ дан 24 January 2018 в 12:47

Можно использовать подстановочные знаки .

Пример: Для перемещения всех файлов, имеющих дополнительный .doc

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

, Это переместит весь файл документа под текущим каталогом определенному месту назначения.

Редактирование

Для ответа на комментарий.

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

24
ответ дан 24 January 2018 в 12:47

Используйте эту команду:

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

Однако ls не рекомендуется для этого вида использования. Используйте , находят команда вместо этого.

7
ответ дан 24 January 2018 в 12:47

В случае, если Вы хотите переместить ряд несоответствующих файлов (никакой общий шаблон на имена и типы), можно сделать, как сказал г-н Rajanand: сначала перейдите к каталогу, который содержит файлы, которые Вы хотите переместить

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

В случае, если файлы рассеиваются в различных каталогах, только необходимо указать путь для каждого файла в команде

перемещения
20
ответ дан 24 January 2018 в 12:47

Я использую метод tuomaz, но немного измененный:

mv file1 file2 file3 -t DESTINATION

я нахожу это легче помнить и тяжелее завинтить, так как это использует то же упорядочивание в качестве ванили mv операция:

mv file1 DESTINATION
10
ответ дан 24 January 2018 в 12:47
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.

3
ответ дан 24 January 2018 в 12:47

Если файлы находятся в том же dir, можно использовать

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

(протестированный в Ubuntu 16.04)

5
ответ дан 22 November 2019 в 22:51

Самый легкий путь похож на это

mv {file1,file2,file3} DESTINATION

или каталог

mv {directory1,directory2,directory3} DESTINATION

или и файлы и каталоги

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

Надеюсь, это поможет

1
ответ дан 22 November 2019 в 22:51

Если вы используете рыбную раковину, в большинстве случаев вам повезло. Так что все просто: просто введите пункт назначения в качестве последнего файла.

mv file1 file2 file3 DESTINATION
0
ответ дан 17 May 2020 в 08:33

Вы можете использовать find и -exec следующим образом:

find . -name "Identifier" -exec echo mv {} <destination_path> \;
2
ответ дан 18 May 2020 в 08:13

Другие вопросы по тегам:

Похожие вопросы: