Відповіді:
З папкою під назвою "myfolder" і на один рівень в ієрархії файлів (точка, яку ви хочете поставити) команда буде:
mv myfolder/* .
Так, наприклад, якщо дані були /home/myuser/myfolder
тоді з /home/myuser/
запуску команди.
.*
. Видалення оригінальної папки є тривіальним і не вимагається, тому ми дозволимо ОП впоратися з цим.
*
і .*
в одному рядку? просто цікавість
mv
буде джерелами, за винятком аргументу LAST, який повинен бути цільовим для переміщення (а у випадку кількох джерел - папкою).
/bin/mv: Argument list too long
Просто для того, щоб зробити його кришталево зрозумілим, взятим з відповіді Руду вище та коментарів.
Якщо вам потрібно перемістити весь вміст, Включаючи файли, які починаються з a. (наприклад, .htaccess, .git тощо), вам потрібно включити в команду і *, і *. Так:
mv subfolder/* subfolder/.* .
Це перемістить вміст підпапки до вашої поточної папки. Зверніть увагу на пробіл до останнього ".".
mv: rename fake/. to ./.: Invalid argument
іmv: rename fake/.. to ./..: Invalid argument
Це можливо за допомогою наступних методів:
Використання rsync
:
rsync -vua --delete-after foo/ .
Використання cp
та rmdir
:
cp -vaR foo/. . && rmdir foo/
Використання mv
(з dotglob
увімкненою опцією):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
де foo/
ваша папка, вміст якої потрібно перемістити на один рівень вгору.
Див .: help shopt
і man bash
.
Використання mv
(як тут запропоновано ):
mv foo/* foo/.[^.]* . && rmdir foo/
Примітка: Це буде пропустити файл з ім'ям foo/..bar..
.
Примітка. Для оболонок POSIX вам потрібні [!.]
.
-v
, -u
, -a
і -r
робити? AFAICT, -v
є багатослівним, що просто робить rsync друкувати більше інформації. -u
означає оновлення - скопіюйте файл лише в тому випадку, якщо він новіший. Це не здається актуальним. -a
означає архів. Це скопіює власника та дозволи файлу та зробить синхронізацію рекурсивною. -r
означає рекурсивний, але це вже охоплено -a
.
-u
корисно, коли ви не хочете витрачати зайвий час на переміщення даних, які вже є (особливо для повільних пристроїв зберігання даних). Я видалив -r
, оскільки він охоплений, -a
як ви згадали.
mv foo/* foo/.[^.]* .
буде пропущено файл, викликаний, foo/..bar..
наприклад. Зауважте, що для оболонок POSIX вам потрібні [!.]
.
rsync -vua --delete-after foo/ .
видаляється все інше, що вже існує в поточному каталозі.
просто видайте команду mv
mv (directory)/* .
якщо ви хочете видалити каталог, тоді додайте
rm -rf (directory)
Передбачається, що ви перебуваєте у батьківському каталозі (каталогу)
Якщо ви всередині (каталогу), то
mv * ../
.DS_store
у macOS. mv
Вище команда не буде рухатися ті (без dotglob
набору).
для тих, хто на спільному сервері, вам доведеться використовувати щось подібне
Для переміщення файлів
mv -v ~/public_html/public_html/* ~/public_html/
Щоб скопіювати файли
cp -a ~/public_html/public_html/* ~/public_html/
.*
не лише,*
якщо в архіві містяться крапки-файли. Також додайте до кінця `&& rmdir myfolder`, щоб видалити сторонні папки. Це збереження, оскільки воно запуститься лише у тому випадку, коли mv поверне успіх AND, оскільки rmdir не видалить не порожній каталог.