Как я могу переместить только простые файлы (не каталоги) из одной папки в Linux в другую папку с помощью mv
команды?
Я пытался mv * ~/
, но он скопировал все, включая каталоги.
Как я могу переместить только простые файлы (не каталоги) из одной папки в Linux в другую папку с помощью mv
команды?
Я пытался mv * ~/
, но он скопировал все, включая каталоги.
Ответы:
Можешь попробовать
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Я вроде как "используй молоток для всего", поэтому я использую программы оболочки Bourne для вещей, которые другие используют для ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Некоторым людям нравится делать вещи как можно быстрее, но я довольно быстрая печатница, и у меня есть такие вещи, встроенные в мой мозг, так что не так уж и сложно сделать это вместо того, чтобы искать точный текст. аргументы, чтобы найти и exec и все такое.
YMMV, хотя ...
@Mereghost очень близко. Вот что я могу переместить все файлы (включая скрытые), но не каталоги:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
.
После того, как находка предполагает , что вы текущий каталог является источником файлов , которые вы хотите переместить. Если нет, команда может быть изменена следующим образом:
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 \;
вы можете использовать найти
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
«s -exec
варианта является лучшим способом избежать этой проблемы.