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/folderB
tồn tại, vì vậy hãy cẩn thận khi sử dụng nó trong các tập lệnh.
folderB
chứa một lượng tập tin điên rồ. Bạn sẽ thấy bash: /bin/mv: Argument list too long
vì việc sử dụng *
. Nếu đó là trường hợp sử dụng mv
kết hợp với find
như đượ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"