Это возможный это, если у меня есть это:
/folder1/folder2/folder3
/folder1/folder2/file1.txt
Я могу удалить folder2, но сохранить его содержание?
Таким образом, результат был бы похож:
/folder1/folder3
/folder1/file1.txt
cd /folder1/folder2/
mv * ../
cd ../
Теперь проверяют содержание папки:
ls
Тогда использование эта команда для удаления каталога. Это абсолютно безопасно, так как это будет [только 113] удалять пустые каталоги:
rmdir folder2/
Я думаю, что Вы не должны на самом деле удалять что-то... просто отодвигают его.
mv /folder1/folder2/* /folder1/
rmdir /folder1/folder2/
команда First перемещает содержание в родительский каталог, и второе удалило каталог, если это пусто. Это не переместит скрытые/точечные файлы. Если бы Вы хотите также переместить скрытые файлы, Вам было бы нужно:
mv /folder1/folder2/{*,.*} /folder1/
rmdir /folder1/folder2/
или использование dotglob опция в ударе. Если бы у Вас нет точечных файлов, это привело бы к no matches found: dir1/dir2/.*
в ударе, и команда перестала бы работать. Также можно проигнорировать:
mv: cannot move ‘folder1/folder2/..’ to ‘folder1/..’: Device or resource busy
ошибки начиная с передач удара .
и ..
к mv
.
Также обработать скрытые файлы:
mv $(find folder2 -mindepth 1 -maxdepth 1) . && rmdir folder2
, Если это превышает ARG_MAX
, используйте этого вместо этого:
find folder2 -mindepth 1 -maxdepth 1 -exec mv {} . \; && rmdir folder2
ответ Rinzwind не обрабатывает скрытые файлы. Если бы Вы используете bash
и хотите соответствовать всем скрытым файлам *
подстановочный знак, Вы нуждались бы shopt -s dotglob
сначала или просто поместили бы его в ~/.bashrc
.
демонстрация:
$ find .
.
./folder2
./folder2/.hidden
./folder2/file1.txt
./folder2/folder3
$ mv $(find folder2 -mindepth 1 -maxdepth 1) . && rmdir folder2
$ find .
.
./.hidden
./file1.txt
./folder3