63

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

12 ответов12

75

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

cd to/the/dir
mv * ../
56
find . -maxdepth 1 -exec mv {} .. \;

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

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

mv: cannot move `.' to `../.': Device or resource busy

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

9

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

mv *.* ..

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

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

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

6

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

mv * ../

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

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

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

2

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

shopt -s dotglob; mv * ..

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

shopt -u dotglob

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

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

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

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

например.

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

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

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

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

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

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

0

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

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

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

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

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

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

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

0

В 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 (родительский каталог).

-1

перейдите в подкаталог и выполните следующую команду для копирования или перемещения файлов.

Пример: a является родительским каталогом, а b является вложенным каталогом, мы хотим переместить / скопировать все файлы из b в a (вложенный каталог в родительский каталог).

cd b
cp * ..
mv * ..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .