Làm cách nào để đổi tên một thư mục thông qua dòng lệnh?


Câu trả lời:


737
mv /home/user/oldname /home/user/newname


Bài viết mát mẻ. Đó chính xác là vấn đề.
Rafał Cieślak

77
Điều này sẽ không hoạt động nếu tên mới đã là một thư mục hiện có. Thay vào đó, nó sẽ di chuyển thư mục cũ bên trong thư mục mới.
cxrodgers

9
Nếu tên thư mục giống với chữ viết hoa, bạn sẽ nhận được No such file or directory. Để tránh điều này làm một cái gì đó như mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF

9
@cxrodgers: pass --no-target-directory( -T) , để tránh coi newnamelà thư mục đích.
jfs

123

mv có thể làm hai công việc.

  1. Nó có thể di chuyển tập tin hoặc thư mục
  2. Nó có thể đổi tên tập tin hoặc thư mục

Để chỉ đổi tên một tệp hoặc thư mục, hãy nhập tệp này trong Terminal:

mv old_name new_name 

với không gian giữa tên cũ và tên mới.

Để di chuyển một tập tin hoặc thư mục gõ này trong Terminal.

mv file_name ~/Desktop 

nó sẽ di chuyển tập tin vào máy tính để bàn.

Nếu là một thư mục bạn nên thêm -Rtrước tên thư mục:

mv -R directory_name ~/Desktop

3
mvtrên Ubuntu là từ lõi core GNU. AFAICT nó không có -Rtùy chọn, cũng không cần thiết khi di chuyển một thư mục.
thân

-r thậm chí không hoạt động
user1735921

Lựa chọn chính xác là -T. Xem câu trả lời của @ bmaupin cho hành vi của nó.
đồng hồ bấm giờ

39
mv -T /home/user/oldname /home/user/newname

Điều đó sẽ đổi tên thư mục nếu đích không tồn tại hoặc nếu nó tồn tại nhưng nó trống. Nếu không nó sẽ cho bạn một lỗi.

Nếu bạn làm điều này thay vào đó:

mv /home/user/oldname /home/user/newname

Một trong hai điều sẽ xảy ra:

  • Nếu /home/user/newnamekhông tồn tại, nó sẽ đổi tên /home/user/oldnamethành/home/user/newname
  • Nếu /home/user/newnametồn tại, nó sẽ di chuyển /home/user/oldnamevào /home/user/newname, tức là/home/user/newname/oldname

Nguồn: Làm thế nào để quyết định rằng mv di chuyển vào một thư mục thay vì thay thế thư mục?


Không hoạt động nếu bạn muốn viết hoa tên thư mục trong hệ thống tệp không phân biệt chữ hoa chữ thường (có khả năng trên MacOS). mv -T $PWD/analisys $PWD/Analisystrả lại mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Tôi đã làm việc xung quanh điều này bằng cách sử dụng một tên trung gian (tức là analisys_).
basilikode

Lệnh có thể không thành công do các giới hạn của hệ thống tệp, nhưng từ góc độ khác, nó đã thành công trong việc diễn giải ý định của bạn (đổi tên một thư mục, không di chuyển nó) :)
bmaupin

bạn đã thử cái này chưa?
Mahmoud S. Marwad

5

Nếu bạn muốn đổi tên một thư mục ở cấp độ của bạn trong hệ thống tệp (ví dụ: bạn đang ở thư mục chính của mình và muốn đổi tên một thư mục cũng nằm trong thư mục chính của bạn):

mv Directory ./NewNameDirectory

4

Đây gvfs-movelệnh cũng sẽ đổi tên file và thư mục.

gvfs-move /home/user/oldname /home/user/newname

3

gvfs-đổi tên cũng sẽ đổi tên thư mục. Nó sẽ báo lỗi nếu một thư mục có tên mới đã tồn tại. Hạn chế duy nhất là bạn không thể sử dụng một đường dẫn với tên thư mục. Vì thế

gvfs-rename /home/boo /home/boo-the-dog 

sẽ không hoạt động, nhưng

cd /home 
gvfs-rename boo boo-the-dog 

sẽ làm việc. Không hữu ích như mv -T nhưng tôi đọc ở người đàn ông rằng nó có nghĩa là cho các hoạt động mạng.

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.