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