Bạn có thể phải làm điều này với cygwin , mà tôi muốn giới thiệu cho bất kỳ ai (vẫn ??) chạy phần mềm gián điệp M $ Windoze.
Một cái gì đó như thế này sẽ làm việc. Thực hiện nó trong thư mục C:/Users/(Username)/Desktop/(Parent-Collection name)/
(mà trong cygwin sẽ được gọi là /cygdrive/c/Users/(Username)/Desktop/(Parent-Collection name)/)
:
for i in `find . -name "*" -type f`;
do mv $i `echo $i | sed 's/.*\/\([^/]*\)/\1/'`;
done
Điều đó sẽ di chuyển tất cả các tập tin trong tất cả các thư mục dưới đây (Parent-Collection name)
đến (Parent-Collection name)
. Cụ thể, đây là một do
vòng lặp với chỉ mục i
lặp qua mọi tập tin từ thư mục hiện tại trở xuống. Đó là những gì find
danh sách lệnh. Bạn có thể tra cứu cú pháp bằng cách chạy man find
. Sau đó, những gì bạn thực hiện là để di chuyển ( mv
) tập tin đó ( $i
) đến vị trí mới. Vị trí mới được chỉ định bởi tên tệp gốc ( echo $i
) chạy qua trình chỉnh sửa luồng ( sed
, mà bạn có thể tìm kiếm với man sed
) được thiết lập để loại bỏ đường dẫn, để lại tên tệp cơ sở.
Tôi đề nghị thử nghiệm nó (tạo một thư mục với một vài thư mục con có chứa một số tệp văn bản trống hoặc một cái gì đó) và đảm bảo có một bản sao lưu!
Sau đó, bạn có thể muốn xóa tất cả các thư mục (bây giờ trống) bên dưới thư mục hiện tại của bạn:
for i in `find . -name "*" -type d`;
do rmdir $i;
done
Điều khác biệt duy nhất ở đây là bạn đang nói find
để tìm thư mục ( -type d
) chứ không phải tập tin ( -type f
) và sau đó loại bỏ các thư mục đó ( rmdir
, chỉ hoạt động trên các thư mục trống).
Linux không tuyệt sao? Cygwin cung cấp cho bạn một số sức mạnh của linux và có thể là bước đầu tiên giúp bạn đủ thoải mái với nó mà một ngày nào đó bạn thậm chí có thể tìm thấy nó trong bạn để chuyển sang một thứ như Ubuntu. :)