Odpowiedzi:
W przypadku folderu o nazwie „mój folder” i wyższego poziomu w hierarchii plików (punkt, w którym chcesz go umieścić), polecenie brzmiałoby:
mv myfolder/* .
Na przykład, jeśli dane były w /home/myuser/myfolderśrodku, /home/myuser/uruchom polecenie.
.*. Usunięcie oryginalnego folderu jest trywialne i nie jest wymagane, więc pozwolimy OP sobie z tym poradzić.
*i .*w jednej linii? tylko ciekawość
mvbędą źródłami oprócz argumentu LAST, który musi być celem przenoszenia (w przypadku wielu źródeł musi to być folder).
/bin/mv: Argument list too long
Żeby było jasne, wzięte z powyższej odpowiedzi Rudu i komentarzy.
Jeśli chcesz przenieść całą zawartość, W TYM pliki zaczynające się od. (takich jak .htaccess, .git itp.), musisz uwzględnić w poleceniu zarówno *, jak i *. Tak jak:
mv subfolder/* subfolder/.* .
Spowoduje to przeniesienie zawartości podfolderu do bieżącego folderu. Zwróć uwagę na spację przed ostatnim „.”.
mv: rename fake/. to ./.: Invalid argumentimv: rename fake/.. to ./..: Invalid argument
Jest to możliwe przy użyciu następujących metod:
Używanie rsync:
rsync -vua --delete-after foo/ .Korzystanie cpi rmdir:
cp -vaR foo/. . && rmdir foo/Używając mv(z dotglobwłączoną opcją):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
gdzie foo/jest twój folder, którego zawartość ma zostać przeniesiona o jeden poziom wyżej.
Zobacz: help shopti man bash.
Za pomocą mv(jak sugerowano tutaj ):
mv foo/* foo/.[^.]* . && rmdir foo/
Uwaga: pominąłby plik o nazwie foo/..bar...
Uwaga: Do powłok POSIX potrzebujesz [!.].
-v, -u, -ai -rrobi? AFAICT, -vjest pełne, co powoduje, że rsync drukuje więcej informacji. -uoznacza aktualizację - skopiuj plik tylko wtedy, gdy jest nowszy. To nie wydaje się istotne. -aoznacza archiwum. Spowoduje to skopiowanie właściciela i uprawnień do pliku, a synchronizacja będzie rekurencyjna. -roznacza rekurencyjny, ale już to obejmuje -a.
-ujest przydatny, gdy nie chcesz tracić dodatkowego czasu na przenoszenie danych, które już tam są (szczególnie w przypadku powolnych urządzeń pamięci masowej). Usunąłem -r, ponieważ jest objęty, -ajak wspomniałeś.
mv foo/* foo/.[^.]* .pominąłby foo/..bar..na przykład plik o nazwie . Zauważ, że do powłok POSIX potrzebujesz [!.].
rsync -vua --delete-after foo/ .usuwa wszystko, co może już istnieć w bieżącym katalogu.
po prostu wydaj polecenie mv
mv (directory)/* .
jeśli chcesz usunąć katalog, dodaj
rm -rf (directory)
Zakładając, że znajdujesz się w katalogu nadrzędnym (katalog)
Jeśli jesteś w (katalogu), to
mv * ../
rmdirnarzeka i wychodzi, jeśli katalog nie jest pusty, a rm -rzamiast tego po prostu usunąłby go i całą jego zawartość. (To poka-jarzmo .)
.DS_storew macOS. Powyższe mvpolecenie nie przenosi ich (bez dotglobzestawu).
dla tych z was na wspólnym serwerze musielibyście użyć czegoś takiego
Aby przenieść pliki
mv -v ~/public_html/public_html/* ~/public_html/
Aby skopiować pliki
cp -a ~/public_html/public_html/* ~/public_html/
.*nie tylko*wtedy, gdy archiwum zawiera pliki kropkowe. Dodaj również `&& rmdir myfolder` na końcu, aby usunąć niepotrzebny folder. Jest to zapisywane, ponieważ będzie działać tylko wtedy, gdy mv zwróci sukces ORAZ ponieważ rmdir nie usunie niepustego katalogu.