Переміщення вмісту папки в батьківську папку - Linux Commandline


18

У мене є папкаА, яка містить папкуB, яка містить багато файлів. Я хотів би позбутися папкиB, але не її вмісту. Я хочу, щоб цей вміст знаходився всередині папкиA. Як я можу це зробити в командному рядку?

Відповіді:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
mv папкаB / *. ? яка крапка?
NewLinuxUser

8
Слідкуйте за крапковими файлами (файлами, ім’я яких починається з.), Оскільки до них не входять. Зробіть також, mv folderB/.* .щоб перемістити їх. @NewLinuxUser, точка у вашому запитанні - псевдонім робочого каталогу (у цьому випадку папкаA).
Брайан

1
Це не вдається, якщо folderB/folderBіснує, тому остерігайтеся використання його в сценаріях.
філіпос

1
Це також не вдається, якщо folderBмістить шалену кількість файлів. Ви побачите bash: /bin/mv: Argument list too longчерез використання *. Якщо це так, використовуйте mvв поєднанні з findзаявою @amphetamachine або зfor loop
Хав'єр де ла Роза

2

Швидка відповідь:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Відповідь на код:

cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.