Di chuyển nội dung thư mục vào thư mục mẹ - Linux Commandline


18

Tôi có một thư mụcA chứa thư mụcB chứa rất nhiều tệp. Tôi muốn thoát khỏi thư mụcB, nhưng không phải nội dung của nó. Tôi muốn những nội dung đó nằm trong thư mụcA. Làm thế nào tôi có thể thực hiện điều này trên dòng lệnh?

Câu trả lời:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
thư mục mvB / *. ? dấu chấm là gì
Người dùng NewLinux

8
Coi chừng các tệp chấm (các tệp có tên bắt đầu bằng.) Vì điều này sẽ không bao gồm các tệp đó. Làm mv folderB/.* .để di chuyển chúng là tốt. @NewLinuxUser, dấu chấm trong câu hỏi của bạn là bí danh cho thư mục làm việc (trong trường hợp này là thư mụcA).
Brian

1
Điều này không thành công nếu folderB/folderBtồn tại, vì vậy hãy cẩn thận khi sử dụng nó trong các tập lệnh.
filipos

1
Điều này cũng thất bại nếu folderBchứa một lượng tập tin điên rồ. Bạn sẽ thấy bash: /bin/mv: Argument list too longvì việc sử dụng *. Nếu đó là trường hợp sử dụng mvkết hợp với findnhư được nêu bởi @amphetamachine, hoặc với mộtfor loop
Javier de la Rosa

2

Câu trả lời nhanh:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Câu trả lời mã cứng:

cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.