Відповіді:
find . -maxdepth 1 -exec mv {} .. \;
це також перемістить приховані файли.
Ви отримаєте повідомлення:
mv: cannot move `.' to `../.': Device or resource busy
коли він намагається рухатися .
(поточний каталог), але це не завдає шкоди.
-maxdepth 1
бути впевнені.
Я прийшов сюди, тому що я теж новачок у цій темі. З якихось причин вищезгаданого не зробили для мене трюк. Що я зробив, щоб перемістити всі файли з директорії до його батьківського каталогу, було:
cd to/the/dir
mv * ../
(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Введіть це в оболонці:
mv *.* ..
Це переміщує всі файли на один рівень вище.
Персонаж *
- шаблон. Тому *.deb
перемістить всі файли .deb і Zeitgeist.*
буде переміщувати Zeitgeist.avi і Zeitgeist.srt одну папку вгору, оскільки, звичайно, ..
вказує на батьківський каталог.
Щоб перемістити все, включаючи папки і т.д., просто використовуйте *
замість *.*
*
ні *.*
для включення каталогів
Він не може бути простішим, ніж:
mv * ../
Щоб також перемістити приховані файли:
mv /path/subfolder/{.,}* /path/
mv
це команда для переміщення файлів, *
означає всі файли і папки і ../
є шлях до батьківського каталогу.
У bash можна використовувати shopt -s dotglob зробити * збігатися з усіма файлами і перемістити їх просто
shopt -s dotglob; mv * ..
Це не найкраще рішення, оскільки налаштування є постійним для оболонки, поки ви не зміните його
shopt -u dotglob
але я думаю, що це добре знати.
(shopt -s dotglob && mv * ..)
. Таким чином, опція є локальною лише для цієї дочірньої оболонки.
Метод, який не викликає помилок і працює щоразу:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find . -maxdepth 2 -type f -exec mv {} .. \;
Я використав варіант вище, щоб перемістити всі файли з підпапок у батьківську.
Я отримував дані в папках за роком, але з допомогою метаданих я міг би мати всі вони в одній папці, що полегшило управління.
напр.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Перенести всі файли та папки до батьківського каталогу в Linux просто.
Перейдіть до цієї папки та використовуйте цю команду:
mv * /the full path
Наприклад, якщо ваші файли та папки такі:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Перейти до цієї папки за допомогою компакт-диска:
cd /home/abcuser/test
mv * /home/abcuser
Всі ваші файли та папки перейдуть до папки з відхиленнями (батьківський каталог).
/the full path
не працює в Linux, ви повинні уникнути пробілів з /the\ full\ path
.
Не потрібно змінювати каталоги. Просто вкажіть * в кінці шляху:
mv /my/folder/child/* /my/folder/
Вище лише переміщує неприховані файли. Щоб використовувати лише приховані файли. *
mv /my/folder/child/.* /my/folder/
Вище двох можна об'єднати в одну команду:
mv /my/folder/child/{.,}* /my/folder/
Також див. Як перемістити всі файли, включаючи приховані файли, у батьківський каталог через *
перейти до підкаталогу та виконати наступну команду для копіювання або переміщення файлів.
ex: a є батьківським каталогом, а b є підкаталогом, ми хочемо перемістити / скопіювати всі файли з b до (підкаталог у батьківський каталог).
cd b
cp * ..
mv * ..