Tập tin mv của mv và bây giờ nó bị thiếu


32

Trong một cửa sổ đầu cuối, tôi gõ:

mv filename ..\..      [Note the wrong slash.]

Bây giờ tôi không thể tìm thấy nó. Không còn. Tôi đã chạy một số tìm kiếm và xem qua các tập tin bị xóa. Không có gì. Gặp sự cố. Phục vụ tôi ngay khi sử dụng máy Windows ngay trước đó.

Bất cứ ai biết nó có thể đã đi đâu?


find / -iname thefilename -print có lẽ ?
Sergiy Kolodyazhnyy

@Serg Với thefilenametên gốc của tệp, findlệnh đó sẽ không tìm thấy tên đó dưới tên mới.
Eliah Kagan

Tôi nhận ra rằng chỉ sau khi đăng bình luận. Phản hồi ban đầu của tôi nếu một tập tin bị thiếu là sử dụng find nhưng điều tôi không nhận ra là op đã đổi tên tập tin thay vì di chuyển nó
Sergiy Kolodyazhnyy

Câu trả lời:


70

Nó đã đi đâu hết, trong thư mục hiện tại. Nó đã được đổi tên thành ....(bốn dấu chấm).

Vì bất kỳ tên tệp nào có .phía trước đều được xử lý một tệp ẩn, vì vậy nó đã bị ẩn. Vì vậy, nếu bạn làm thế ls, bạn sẽ không tìm thấy nó. Giống như mọi khi, bạn cần tùy chọn -a(hoặc -A) lsđể xem các tập tin ẩn tức là ls -a(hoặc ls -A) để xem nó.

Hãy để tôi phá vỡ nó, bạn đã chạy mv filename ..\.., hai dấu chấm đầu tiên có nghĩa là thư mục mẹ nếu có ../, nhưng bạn đã sử dụng dấu gạch chéo ngược ..\chỉ ra shell để thoát ký tự tiếp theo nhưng một dấu chấm .không có ý nghĩa đặc biệt đối với shell. Vì vậy, nó sẽ coi nó như một nghĩa đen .và cuối cùng .cũng được thêm vào, vì vậy bạn có bốn dấu chấm ....làm tên tệp.

Để trở lại tên (bản gốc) trước đó, hãy chạy mv .... filename.


2
Hahaha ... không bao giờ xảy ra với tôi. Đó là: "....". Cảm ơn! Tôi đoán nó diễn giải dấu chấm đầu tiên là dấu chấm .hideme.
Giăng

2
Tôi có thể đề nghị la -A(với số vốn A). Nó làm giống như ls -anhưng loại trừ ....
Paddy Landau

13

Chạy mv .... filenameđể đổi tên nó trở lại. ( mv ..\.. filenamecũng sẽ hoạt động, nhưng điều \này là không cần thiết - như trong lệnh ban đầu của bạn.)

  • Các tập tin đã không bị xóa, đó là lý do tại sao việc tìm kiếm các tập tin bị xóa có thể phục hồi đã không tìm thấy nó.
  • Giống như trong Windows, ...các mục có mặt trong mọi thư mục và tham khảo các thư mục "hiện tại" và "cha mẹ" tương ứng. Nhưng không giống như trong Windows, các chuỗi nhiều hơn hai dấu chấm không có bất kỳ ý nghĩa đặc biệt nào. Mặc dù điều đó là bất thường, nhưng bạn hoàn toàn tự do đặt tên cho một tệp thông thường với một tên bao gồm các dấu chấm, miễn là nó dài ít nhất ba chấm.
  • Không giống như trong Windows, trong Ubuntu, shell sử dụng \như một ký tự thoát, đảm bảo shell xử lý ký tự sau theo nghĩa đen thay vì mang ý nghĩa đặc biệt. Ký .tự không có ý nghĩa đặc biệt trong shell (đặc biệt, shell không phải là thứ chịu trách nhiệm làm cho các mục ...hoạt động). Do đó, trong lệnh của bạn, \.tương đương với ..
  • Như heemayl nói , theo mặc định, hầu hết các tiện ích không hiển thị các tệp và thư mục có tên bắt đầu bằng a .. Kể từ khi ....bắt đầu ., chạy lsmà không có -Ahoặc -acờ không tiết lộ nó.

1
Đó chính xác là cách tôi tìm thấy nó. Tôi đã tự hỏi tại sao "\" của tôi không hoạt động như một lối thoát, nhưng ya, không có gì để thoát nên được đối xử bình thường. Có ý nghĩa.
Giăng

5

bây giờ nó vẫn nằm trong cùng một thư mục, chỉ là một tập tin 'ẩn'. Bạn có thể khôi phục nó bằng "mv .... tên tệp".

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.