Як перенести всі файли з однієї папки в іншу за допомогою командного рядка?


245

Я хотів би знати, як я міг перемістити всі файли з папки в іншу папку з командним рядком.

Скажімо, я перебуваю в папці "Завантаження", і є 100 файлів, які я хотів би перенести у свою папку "Відео", без того, щоб писати всі назви файлів.


Ви питаєте про переїзд, filesале люди показують, як рухатись не тільки, filesале й foldersтакож. Це нормально?
Аскар

2
@ Hontvári Levente рік тому дав відповідь, що, здається, є найкращим, чистим, простим, і це працює. Отже, як він отримав лише 3 голоси (порівняно з 262 за відповідь, що знаходиться вгорі)?
Рей Баттерворт

Відповіді:


331

Відкрийте термінал і виконайте цю команду:

mv  -v ~/Downloads/* ~/Videos/

Він перемістить усі файли та папки із папки "Завантаження" у папку "Відео".


Щоб перемістити всі файли, але не папки:

Якщо вас цікавить переміщення всіх файлів (але не папок) із папки "Завантаження" у папку "Відео", скористайтеся цією командою

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

Щоб переміщувати лише файли з папок Завантажити, але не з підпапок:

Якщо ви хочете перемістити всі файли з папки "Завантаження", але не будь-які файли в папках у папці "Завантажити", скористайтеся цією командою:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

тут -maxdepthпараметр вказує, як слід спробувати глибоке знаходження, 1означає лише каталог, вказаний у команді find. Ви можете спробувати використовувати 2, 3також для тестування.

Детальне пояснення див. У розділі пошуку Ubuntu для пошуку


3
ви можете використовувати mv поодинці, щоб перенести весь каталог у іншу папку: папка mv ~ / Документи
JohnMerlino

20
FYI Я вважаю, що ваша перша команда ("mv -v ~ / Downloads / * ~ / Videos /") не перемістить крапкові файли.
Марк Долінер

1
Так, файли не переміщатимуться
Anwar

3
Nb. ваше -print0 | xargs -0 mv -t ~/Videosможна зробити більш ефективно з -exec mv -t ~/Videos \{\} \+:-)
artfulrobot

3
mv -v ~/Downloads/* ~/Videos/не працює для прихованих файлів
FreeLightman

28
mv ~/Downloads/* ~/Videos

Він перемістить усі файли, включаючи папки в потрібний каталог mv. Якщо ви хочете cp(скопіювати) або rm(видалити), вам знадобиться -r(рекурсивна) опція, щоб включити підпапки.


2
Моя команда mv не має опції -R (Ubuntu 14.04).
Марк Долінер

1
@MarkDoliner, так, mvне потрібен рекурсивний варіант для включення вкладених папок. Можна використовувати його і для перейменування.
Ален

Мені не потрібно було *. Те ж саме сталося і без використання зірки.
MycrofD

Префікс ~ / у назвах папок не завжди працює (не працює на bash та git atleast)
Krish Munot

Це рішення призведе до помилки, якщо вихідний каталог порожній.
П'єр Тібо

11

Для простого випадку:

mv ~/Downloads/* ~/Videos

Якщо ви також хочете перемістити точкові (приховані) файли, то встановіть параметр оболонки dotglob .

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Це залишає набір параметрів оболонки.

Одноразове використання dotglob, запустіть команди в нижній частині:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

Примітка для себе: останній варіант (shopt -s dotglob; mv ~/Downloads/* ~/Videos) лише переміщує (вирізає) вміст (включаючи приховані файли). У цьому випадку і початкові, і цільові папки повинні вже існувати. Наприкінці каталог початків стає порожнім.
Pathros

Це має бути прийнята відповідь
мегар

11

Це можливо, використовуючи rsync, наприклад:

rsync -vau --remove-source-files src/ dst/

де:

-v, --verbose: Збільшення багатослівності.

-a, --archive: Режим архіву; дорівнює -rlptgoD(немає -H, -A, -X).

-u, --update: Пропускайте новіші файли на приймачі.

--remove-source-files Це говорить rsyncпро видалення з боку надсилання файлів (маючи на увазі не-каталоги), які є частиною передачі та успішно дублюються на приймальній стороні.

Якщо у вас є root права, префікс, sudoщоб вирішити можливі проблеми з дозволом.


1
УВАГА! опція --delete-after, як зазначалося, не працює так, як ви могли очікувати. Він не видаляє вихідні файли після успішної копіювання ... ВІДКРИТИ ВСІ ЗАЛИШКІ / ІНШІ ФАЙЛИ В ДЕСТИНАЦІЇ. (як зазначав @kenorb ... але я не читав достатньо уважно! DOH)
Джей Марм

4

Використовуйте

mv -v ~/rootfolder/branch/* ~/rootfolder

Я сподіваюся, що це допомагає. Тому що я мав такий самий біль і витрачав багато часу, щоб виправити свою помилку.


2

Щоб перемістити каталог із вмістом або без вмісту до його нового імені так само, як ви використовуєте mvкоманду для перейменування файлу:

mv -T dir1 dir2

де:

  • -T трактує призначення як звичайний файл
  • dir1 є оригінальною назвою каталогу
  • dir2 - це нова назва каталогу

NB: dir2не повинно існувати.

Я сподіваюся, що це економить комусь багато часу, як noob, перед цим я створив би каталог з новою назвою, а потім перемістив вміст каталогу до створеного раніше каталогу.

Використовувати для підкаталогів

Ця команда корисна, коли багато файлів збережено у підпапці цільового каталогу, тобто Downloads/mp4. У цьому прикладі запуск mv -T Downloads/mp4 Videosпризведе до видаленняmp4 підпапки, а всі файли, що містяться всередині, переміщуються до папки Відео.


1
+1, тому що перевірена робота в Xubuntu 14.04. Я додав приклад у цій відповіді, щоб показати, що ця команда призведе dir1до видалення. Окрім цієї обережності, ця відповідь зазначила щось хороше для щоденного використання.
клеаркімура

1
"Перемістити каталог із вмістом або без нього до його нової назви" Як ви можете перемістити каталог ... до імені? В цьому немає сенсу. "-T трактує призначення як звичайний файл" Як може адресатом бути файл? Ви маєте на увазі каталог?
Моніка Геднек

Це як перейменування файлу на нове ім'я, як ви б робили з чимось на зразок, mv fileA fileBале -Tпрапор у цьому випадку трактує цільове місце / каталог як файл та перейменовує його.
Feyisayo Sonubi

Працював для мене :)
Naveen Kumar V

1
  1. Перейдіть до командного рядка і потрапляйте в каталог, в який ви хочете перемістити його cd folderNamehere
  2. Тип pwd. Це надрукує каталог, який ви також хочете перемістити.
  3. Потім перейдіть до каталогу, де є всі файли cd folderNamehere
  4. Тепер перенести всі типи файлів mv *.* typeAnswerFromStep2here

Це перемістить усі файли з цього каталогу до іншого.


3
Це не буде відповідати файлам без будь-якого розширення. наприклад , якщо папка містить файли: foo.txt, bar.а barтак bar.і barНЕ буде переміщена. Використання *замість того, щоб *.*подбати про це. Але в обох випадках приховані файли типу: .foobarне будуть переміщені.
День

1
mv source_path/* destination_path/

тут ви повинні висунути косу *рису і після вихідного контуру, щоб він зайняв файли всередині source_path замість повного каталогу джерела.

Приклад: mv /home/username/test/* /home/username/test2/

Наведена вище команда переміщує всі файли (якщо вони не приховані) у вихідному каталозі до каталогу призначення.


0

Спробуй це

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-type з аргументом -type ви можете вказати тип file.on це твердження, що є середнім file.if, використовуючи -d, що означає каталог.

-iname: найпоширенішим і очевидним методом пошуку файлу є використання його -name argument.if ви не впевнені в його чутливості до регістру, ви можете використовувати аргумент -iname

mv {} і, нарешті, вказати цільовий каталог, а потім перемістити файли туди за допомогою аргументу mv {}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.