Bạn có thể đổi tên một tệp (thư mục hoặc bất cứ thứ gì) chỉ sử dụng kiến thức về inode bằng cách sử dụng find
, nhưng nếu (a) hệ thống tệp chứa nó không được gắn kết, hoặc nếu (b) có một hệ thống tệp khác được gắn trên một thư mục không trống có chứa tập tin bạn quan tâm, tập tin của bạn không thể truy cập được. Trong trường hợp (a), bạn cần gắn hệ thống tập tin trước khi bạn có thể làm bất cứ điều gì với nội dung, bao gồm đổi tên và trong trường hợp (b), bạn cần ngắt kết nối hệ thống tập tin được gắn "trên đầu" của thư mục chứa tập tin bạn muốn đổi tên. Có vẻ như bạn đang hỏi về trường hợp (b).
Nếu tôi hiểu bạn một cách chính xác, bạn đang cố gắng làm cho /home
thư mục cũ của bạn (nằm trên phân vùng gốc của bạn) có thể truy cập được, trong khi vẫn sử dụng phân vùng mới được gắn tại /home
. Nếu đó là những gì bạn muốn, hãy làm như sau:
Đóng tất cả các tập tin và đăng xuất. Sau đó đăng nhập với tư cách root
(sử dụng thiết bị đầu cuối ảo cho điều này, nhấn Ctrl-Alt-F2) Chạy như sau:
umount /home
mv /home /home-old
mkdir /home
mount -a
ls /home
ls /home-old
Nếu tất cả đều ổn, hãy đăng xuất và đăng nhập lại với tư cách là chính mình và tất cả sẽ ổn.
Ngẫu nhiên, lệnh đổi tên một tệp chỉ sử dụng kiến thức về inode của nó (giả sử tệp nằm trong thư mục hiện tại) là:
find . -maxdepth 1 -inum 123456789 -exec mv {} mynewname \;
Trong trường hợp 123456789
là số inode, tất nhiên. (Lưu ý rằng find
xác định tên tệp và đường dẫn của nó và chuyển thông tin này đến mv
; không có cách nào để đổi tên một tệp mà không liên quan đến tên tệp hiện có theo bất kỳ cách nào, nhưng nếu bạn không biết tên tệp thì hoàn toàn không biết đơn giản.)