Câu trả lời:
tìm thấy . -maxdepth 1 -exec mv {} .. \;
điều này cũng sẽ di chuyển các tập tin ẩn.
Bạn sẽ nhận được tin nhắn:
mv: không thể di chuyển `. ' đến `../. ': Thiết bị hoặc tài nguyên bận
khi nó cố di chuyển .
(thư mục hiện tại) nhưng điều đó sẽ không gây ra tác hại gì.
-maxdepth 1
.
Tôi đến đây vì tôi cũng mới với chủ đề này. Vì một số lý do, những điều trên không làm được điều đó cho tôi. Những gì tôi đã làm để di chuyển tất cả các tệp từ một thư mục đến thư mục mẹ của nó là:
cd to/the/dir
mv * ../
(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Nhập cái này vào vỏ:
mv *.* ..
Điều đó di chuyển TẤT CẢ các tập tin lên một cấp.
Nhân vật *
là một ký tự đại diện. Vì vậy, *.deb
sẽ di chuyển tất cả các tệp .deb và Zeitgeist.*
sẽ di chuyển Zeitgeist.avi và Zeitgeist.srt một thư mục lên, vì, tất nhiên, ..
chỉ ra thư mục mẹ.
Để di chuyển mọi thứ, kể cả thư mục, v.v., chỉ cần sử dụng *
thay vì*.*
*
không *.*
bao gồm các thư mục
Nó không thể đơn giản hơn:
mv * ../
Để di chuyển các tập tin ẩn:
mv /path/subfolder/{.,}* /path/
mv
là một lệnh để di chuyển tệp, *
có nghĩa là tất cả các tệp và thư mục và ../
là đường dẫn đến thư mục mẹ.
Trong bash, bạn có thể sử dụng shopg -s dotglob để tạo * khớp tất cả các tệp và di chuyển chúng đơn giản bằng cách
shopt -s dotglob; mv * ..
Đây không phải là giải pháp tốt nhất vì cài đặt là vĩnh viễn cho vỏ cho đến khi bạn thay đổi nó bằng
shopt -u dotglob
nhưng tôi nghĩ thật tốt khi biết điều đó
(shopt -s dotglob && mv * ..)
. Bằng cách đó, tùy chọn chỉ là cục bộ cho subshell đó.
Một phương pháp không gây ra lỗi và hoạt động mọi lúc:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find . -maxdepth 2 -type f -exec mv {} .. \;
Tôi đã sử dụng một biến thể ở trên để di chuyển tất cả các tệp từ thư mục con vào phụ huynh.
Tôi đã nhận được dữ liệu trong các thư mục theo năm, nhưng được tìm thấy bằng cách sử dụng siêu dữ liệu, tôi có thể có tất cả chúng trong cùng một thư mục giúp quản lý dễ dàng hơn.
ví dụ.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Thật đơn giản để di chuyển tất cả các tệp và thư mục vào thư mục mẹ trong Linux.
Chuyển đến thư mục đó và sử dụng lệnh này:
mv * /the full path
Ví dụ: nếu các tệp và thư mục của bạn như sau:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Chuyển đến thư mục đó qua cd:
cd /home/abcuser/test
mv * /home/abcuser
Tất cả các tệp và thư mục của bạn sẽ chuyển đến thư mục abcuser (thư mục mẹ).
/the full path
không hoạt động trong Linux, bạn phải thoát không gian với /the\ full\ path
.
Không cần phải thay đổi thư mục. Chỉ cần bao gồm * ở cuối đường dẫn:
mv /my/folder/child/* /my/folder/
Ở trên chỉ di chuyển các tập tin không ẩn. Để di chuyển chỉ các tập tin ẩn sử dụng. *
mv /my/folder/child/.* /my/folder/
Trên hai có thể được kết hợp thành một lệnh:
mv /my/folder/child/{.,}* /my/folder/
Xem thêm: Cách di chuyển tất cả các tệp bao gồm các tệp ẩn vào thư mục mẹ qua *
chuyển sang thư mục con và thực hiện lệnh sau để sao chép hoặc di chuyển tệp.
ví dụ: a là thư mục mẹ và b là thư mục con, chúng tôi muốn di chuyển / sao chép tất cả các tệp từ b sang a (thư mục con sang thư mục mẹ).
cd b
cp * ..
mv * ..