Jak mogę przenieść tylko zwykłe pliki (nie katalogi) z jednego folderu w systemie Linux do innego folderu za pomocą mv
polecenia?
Próbowałem mv * ~/
, ale skopiowałem wszystko, w tym katalogi.
Jak mogę przenieść tylko zwykłe pliki (nie katalogi) z jednego folderu w systemie Linux do innego folderu za pomocą mv
polecenia?
Próbowałem mv * ~/
, ale skopiowałem wszystko, w tym katalogi.
Odpowiedzi:
Możesz spróbować
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Jestem typem „używaj młotka do wszystkiego”, więc używam programów Bourne Shell do rzeczy, które inni używają programów zewnętrznych do ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Niektórzy ludzie lubią robić rzeczy tak mało pisania, jak to możliwe, ale jestem dość szybką maszynistką i mam takie rzeczy wbudowane w mój mózg, więc nie jest to zbyt uciążliwe, aby to zrobić zamiast szukać dokładnego argumenty do znalezienia i wykonania i tak dalej.
YMMV, chociaż ...
@Mereghost jest bardzo blisko. Oto, co mogę przenieść wszystkie pliki (w tym pliki ukryte), ale nie katalogi:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
.
Po find zakłada, że bieżący katalog jest źródłem plików, które chcesz przenieść. Jeśli nie, polecenie można zmienić w następujący sposób:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Jeśli chcesz przenieść tylko zwykłe pliki, a nie pliki ukryte:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Jeśli chcesz przenieść tylko pliki ukryte, a nie zwykłe:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
możesz użyć find
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
„s -exec
opcja jest najlepszym sposobem na uniknięcie tego problemu.