Bạn có thể tìm thấy một bộ giải pháp toàn diện về vấn đề này trong câu trả lời của UNIX & Linux cho Làm cách nào để di chuyển tất cả các tệp (kể cả ẩn) từ thư mục này sang thư mục khác? . Nó hiển thị các giải pháp trong Bash, zsh, ksh93, tiêu chuẩn (POSIX) sh, v.v.
Bạn có thể sử dụng hai lệnh này cùng nhau:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
Hoặc tất cả cùng nhau ( cảm ơn pfnuesel ):
mv /path/subfolder/{.,}* /path/
Mở rộng thành:
mv /path/subfolder/* /path/subfolder/.* /path/
(ví dụ: echo a{.,}b
mở rộng thành a.b ab
)
Lưu ý rằng điều này sẽ hiển thị một số cảnh báo:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
Chỉ cần bỏ qua chúng: điều này xảy ra bởi vì /path/subfolder/{.,}*
cũng mở rộng đến /path/subfolder/.
và /path/subfolder/..
, là thư mục và thư mục mẹ (Xem “.” Và “..” có nghĩa là gì khi ở trong một thư mục? ).
Nếu bạn chỉ muốn sao chép, bạn có thể sử dụng:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
Thao tác này sẽ sao chép tất cả các tệp, cả tệp bình thường và tệp ẩn, vì /path/subfolder/.
mở rộng thành "mọi thứ từ thư mục này" (Nguồn: Làm thế nào để sao chép bằng cp để bao gồm tệp ẩn và thư mục ẩn và nội dung của chúng? )
cp -r /path/to/source/. /destination