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?
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:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
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).
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.
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
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"