it-swarm-ru.tech

Как переместить файлы и каталоги в родительскую папку в Linux?

В Linux (Ubuntu), как вы перемещаете все файлы и каталоги в родительский каталог?

70
nekbaba
находить . -maxdepth 1 -exec mv {} .. \;

это также переместит скрытые файлы.

Вы получите сообщение:

mv: не может двигаться `. ' to `../. ': устройство или ресурс занят

когда он пытается переместить . (текущий каталог), но это не причинит никакого вреда.

61
John T

Я пришел сюда, потому что я новичок в этом вопросе. По какой-то причине вышесказанное не помогло мне. Что я сделал, чтобы переместить все файлы из директории в родительскую директорию:

cd to/the/dir
mv * ../
83
Ben Fransen

Введите это в оболочке:

mv *.* ..

Это перемещает ВСЕ файлы на один уровень вверх.

Символ * является подстановочным знаком. Поэтому *.deb переместит все файлы .deb, а Zeitgeist.* переместит Zeitgeist.avi и Zeitgeist.srt на одну папку вверх, поскольку, конечно, .. указывает на родительский каталог.

Чтобы переместить все, включая папки и т.д., Просто используйте * вместо *.*

10
Gil

Это не может быть проще, чем:

mv * ../

Чтобы также переместить скрытые файлы:

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

mv - это команда для перемещения файлов, * означает все файлы и папки, а ../ - это путь к родительскому каталогу.

6
William Edwards

В bash вы можете использоватьshopt -s dotglob , чтобы * сопоставить все файлы и переместить их просто

shopt -s dotglob; mv * ..

Это не лучшее решение, так как этот параметр является постоянным для оболочки, пока вы не измените его

shopt -u dotglob

но я думаю это приятно знать.

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

Я использовал вариант выше, чтобы переместить все файлы из подпапок в родительский.

Я собирал данные в папки по годам, но, обнаружив, используя метаданные, я мог хранить их в одной папке, что облегчало управление.

например.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
1
Bill Bixby

Метод, который не вызывает ошибок и работает каждый раз:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done
1
djhaskin987
find -type f|while read line; do mv $line ${line##*/}; done
0
Adler

Предполагая, что все ваши скрытые файлы начинаются с точки, за которой следует буква или цифра (что они должны), вы можете использовать

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

Часть .[A-Za-z0-9]* должна убедиться, что вы не пытаетесь переместить . или .. вдоль, что может привести к сбою.

0
ℝaphink

Нет необходимости менять каталоги. Просто включите * в конце пути:

mv /my/folder/child/* /my/folder/

Выше только перемещаются не скрытые файлы. Для перемещения используйте только скрытые файлы. *

mv /my/folder/child/.* /my/folder/

Выше двух можно объединить в одну команду:

mv /my/folder/child/{.,}* /my/folder/

Также смотрите: Как переместить все файлы, включая скрытые, в родительский каталог через *

0
Shital Shah

В Linux просто переместить все файлы и папки в родительский каталог.

Перейдите в эту папку и используйте эту команду:

mv * /the full path

Например, если ваши файлы и папки выглядят следующим образом:

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

Перейдите в эту папку через cd:

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

Все ваши файлы и папки будут перемещены в папку abcuser (родительский каталог).

0
Abhishek