Mam katalog, który jest rozpakowany, ale znajduje się w folderze. Jak mogę przenieść zawartość o jeden poziom wyżej? Uzyskuję dostęp do CentOS przez SSH.
127
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.
.*
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..*
. Usunięcie oryginalnego folderu jest trywialne i nie jest wymagane, więc pozwolimy OP sobie z tym poradzić.*
i.*
w jednej linii? tylko ciekawośćmv
bę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:
Spowoduje to przeniesienie zawartości podfolderu do bieżącego folderu. Zwróć uwagę na spację przed ostatnim „.”.
źródło
mv: rename fake/. to ./.: Invalid argument
imv: rename fake/.. to ./..: Invalid argument
Jest to możliwe przy użyciu następujących metod:
Używanie
rsync
:Korzystanie
cp
irmdir
:Używając
mv
(zdotglob
włączoną opcją):gdzie
foo/
jest twój folder, którego zawartość ma zostać przeniesiona o jeden poziom wyżej.Zobacz:
help shopt
iman bash
.Za pomocą
mv
(jak sugerowano tutaj ):Uwaga: pominąłby plik o nazwie
foo/..bar..
.Uwaga: Do powłok POSIX potrzebujesz
[!.]
.źródło
-v
,-u
,-a
i-r
robi? AFAICT,-v
jest pełne, co powoduje, że rsync drukuje więcej informacji.-u
oznacza aktualizację - skopiuj plik tylko wtedy, gdy jest nowszy. To nie wydaje się istotne.-a
oznacza archiwum. Spowoduje to skopiowanie właściciela i uprawnień do pliku, a synchronizacja będzie rekurencyjna.-r
oznacza rekurencyjny, ale już to obejmuje-a
.-u
jest 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,-a
jak wspomniałeś.mv foo/* foo/.[^.]* .
pominąłbyfoo/..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
jeśli chcesz usunąć katalog, dodaj
Zakładając, że znajdujesz się w katalogu nadrzędnym (katalog)
Jeśli jesteś w (katalogu), to
źródło
rmdir
narzeka i wychodzi, jeśli katalog nie jest pusty, arm -r
zamiast tego po prostu usunąłby go i całą jego zawartość. (To poka-jarzmo .).DS_store
w macOS. Powyższemv
polecenie nie przenosi ich (bezdotglob
zestawu).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/
źródło