16

Как я могу переместить только простые файлы (не каталоги) из одной папки в Linux в другую папку с помощью команды mv ?

Я пробовал mv * ~/ , но он скопировал все, включая каталоги.

5 ответов5

24

Ты можешь попробовать

find . -maxdepth 1 -type f -exec mv {} destination_path \;
5

Я вроде как "используй молоток для всего", поэтому я использую программы оболочки Bourne для вещей, которые другие используют для ...

for file in * .* 
do
  test -f "$file" && mv "$file" "$HOME"/
done

Некоторым нравится делать вещи как можно быстрее, но я довольно быстрая печатница, и у меня в мозгу есть такие вещи, так что делать это не слишком сложно, вместо того, чтобы искать точный текст аргументы, чтобы найти и exec и все такое.

YMMV, хотя ...

2

@Mereghost очень близко. Вот что я могу переместить все файлы (включая скрытые), но не каталоги:

find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;

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

find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;

Если вы хотите переместить только обычные файлы, а не скрытые файлы:

find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;

Если вы хотите переместить только скрытые файлы, а не обычные файлы:

find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
-1

вы можете использовать найти

find * -maxdepth 1 -type f -exec mv {} ~ \;
-2

mv `find ./sourcedir/* -type f` ./destdir

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .