Jak przenieść pliki i katalogi do folderu nadrzędnego w systemie Linux?


Odpowiedzi:


66
odnaleźć . -maxdepth 1 -exec mv {} .. \;

spowoduje to również przeniesienie ukrytych plików.

Otrzymasz wiadomość:

mv: nie można przenieść `. ' na `../. ': Urządzenie lub zasób zajęty

kiedy próbuje się przenieść .(bieżący katalog), ale to nie spowoduje żadnej szkody.


1
Przeniesie także wszystkie pliki ze wszystkich podkatalogów do elementu nadrzędnego bieżącego katalogu. Chciałbym -maxdepth 1się upewnić.
ℝaphink

1
Teraz mówi: mv: nie można przenieść ./scripts' to ../scripts ': katalog nie jest pusty

1
Musisz mieć katalog o nazwie skrypty w katalogu nadrzędnym ORAZ w bieżącym katalogu. Będziesz musiał zmienić nazwę tego, zanim go przeniesiesz.
ℝaphink

1
Działało, ale zostawiłeś jedną bardzo ważną informację - musisz uruchomić ją z podkatalogu. Nie spowoduje to również usunięcia samego podkatalogu, dlatego należy wykonać kopię zapasową jednego katalogu i wykonać rmdir w tym podkatalogu.
rzemieślnik

89

Przyjechałem tutaj, ponieważ jestem również nowy w tym temacie. Z jakiegoś powodu powyższe nie zadziałało dla mnie. Aby przenieść wszystkie pliki z katalogu do katalogu nadrzędnego, wykonałem:

cd to/the/dir
mv * ../

12
Nie przenosi to jednak ukrytego pliku
Wavesailor,

1 linijka:(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Dawid Drozd

10

Wpisz to w powłoce:

mv *.* ..

To przenosi WSZYSTKIE pliki o jeden poziom wyżej.

Postać *jest symbolem wieloznacznym. Tak więc *.debprzeniesie wszystkie pliki .deb i Zeitgeist.*przeniesie Zeitgeist.avi i Zeitgeist.srt o jeden folder w górę, ponieważ, oczywiście, ..wskazuje katalog nadrzędny.

Aby przenieść wszystko, w tym foldery itp., Po prostu użyj *zamiast*.*


3
to nie działało z reżimami! lub ukryte pliki

Działa z reżimami, przynajmniej dla mnie.
maaartinus

5
Chcesz *nie *.*obejmuje katalogów
Chris S

To miły dokument
BlackBurn027,

6

Nie może być prostsze niż:

mv * ../

Aby przenieść również ukryte pliki:

mv /path/subfolder/{.,}* /path/ 

mvto polecenie do przenoszenia plików, *oznacza wszystkie pliki i foldery i ../jest ścieżką do katalogu nadrzędnego.


2

W bashu można użyć shopt -s dotglob zrobić * meczu wszystkie pliki i przenieść je po prostu

shopt -s dotglob; mv * ..

To nie jest najlepsze rozwiązanie, ponieważ ustawienie jest stałe dla powłoki, dopóki jej nie zmienisz

shopt -u dotglob

ale myślę, że dobrze wiedzieć.


4
Nazywają go w podpowłoce: (shopt -s dotglob && mv * ..). W ten sposób opcja jest lokalna tylko dla tej podpowłoki.
Martin Ueding

Dobra odpowiedź - jest prosta, zawiera ukryte pliki i nie powoduje błędu przy kopiowaniu „”. i „..”
Daniel Howard

1

Metoda, która nie powoduje błędów i działa za każdym razem:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

Użyłem odmiany powyżej, aby przenieść wszystkie pliki z podfolderów do elementu nadrzędnego.

Mam dane w folderach z roku na rok, ale dzięki metadanych mogłem mieć je wszystkie w tym samym folderze, co ułatwiło zarządzanie.

na przykład.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

Zakładając, że wszystkie twoje ukryte pliki zaczynają się od kropki, a następnie litery lub cyfry (które powinny), możesz użyć

mv * .[A-Za-z0-9]* ..

.[A-Za-z0-9]*Część jest upewnienie się, że nie starają się poruszać .lub ..wzdłuż, które zawodzą.


0

W Linuksie łatwo jest przenieść wszystkie pliki i foldery do katalogu nadrzędnego.

Przejdź do tego folderu i użyj tego polecenia:

mv * /the full path

Na przykład jeśli twoje pliki i foldery są następujące:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

Przejdź do tego folderu przez cd:

cd /home/abcuser/test
mv * /home/abcuser

Wszystkie twoje pliki i foldery zostaną przeniesione do folderu abcuser (katalog nadrzędny).


2
Dzięki @Gareth, miałem to samo. Abhishek, proszę nie publikować żadnych niepowiązanych linków, jaki jest w tym sens? Sprawdź również formatowanie. Dodatkowo /the full pathnie działa w systemie Linux, musisz uciec spacjami /the\ full\ path.
slhck,


0
find -type f|while read line; do mv $line ${line##*/}; done

Dzięki za udzielenie odpowiedzi. Chociaż może to działać w prostych scenariuszach, przesyłanie finddo while readjest złym sposobem użycia find, a lepsze odpowiedzi zostały już opublikowane.
Scott

-1

przejdź do podkatalogu i wykonaj następujące polecenie, aby skopiować lub przenieść pliki.

np .: a to katalog nadrzędny, a b to podkatalog, chcemy przenieść / skopiować wszystkie pliki z b do a (podkatalog do katalogu nadrzędnego).

cd b
cp * ..
mv * ..

Witamy w Super User! To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.