Điểm:3

tất cả các tệp trong thư mục đã biến mất do lỗi đánh máy khi sử dụng `mv`

lá cờ jp

Tôi chưa quen với bash và tôi đang cố đổi tên tất cả các tệp trong một thư mục thành tổng kiểm tra md5 của chúng theo cách sau.

r@r:~g$ sh
$ cho F trong *; làm
> mv "$F" "$(md5sum "$i")"
> xong
r@r:~/g$ ls
'd458d56dd4ab8c2b335da66e0bcab924 nRUNO5wt3JRN3pBt.mp4'

Tôi đã mắc lỗi đánh máy và dòng mv "$F" "$(md5sum "$i")" nên là mv "$F" "$(md5sum "$F")" nếu tôi không nhầm. Bây giờ tất cả các tệp trong thư mục đều bị thiếu trừ một tệp.

Các tập tin đã bị xóa hoặc di chuyển đi đâu đó? Có cách nào để khôi phục chúng?

Khi tôi cố gắng tạo lại tình huống trong một thư mục có tệp "1.png" trong đó, điều sau đây sẽ xảy ra.

r@r:~/a$sh
$ cho F trong *; làm
> mv "$F" "$(md5sum "$i")"
> xong
md5sum: '': Không có tệp hoặc thư mục như vậy
mv: không thể di chuyển '1.png' sang '': Không có tệp hoặc thư mục như vậy
lá cờ cn
Trừ khi bạn có một bản sao lưu, những tệp đó không thể được khôi phục. Mỗi tệp bị ghi đè bởi tệp tiếp theo, chỉ để lại tệp cuối cùng.
Điểm:5
lá cờ it

Chắc là không. Xem xét cách vòng lặp của bạn "hoạt động" và cái nào mv các lệnh được thực thi.

Đối với tệp đầu tiên, bạn đã thực hiện

mv the_file "$(md5sum $i)"

nhưng kể từ khi "$(md5sum "$i")" KHÔNG thay đổi khi bạn lặp lại, lệnh cho tệp tiếp theo là:

mv the_2nd_file "$(md5sum "$i")"

thay thế tập tin đầu tiên. Tệp đầu tiên bị xóa và các khối đĩa của nó được đánh dấu là "miễn phí".

Điều tương tự cũng xảy ra với các tệp thứ 3 đến thứ N. Tất cả những gì còn lại là tệp CUỐI CÙNG, bây giờ được đặt tên là "$(md5sum "$i")".

Bạn có sao lưu không?

Khi viết các lệnh mạnh/nguy hiểm để áp dụng cho một loạt tệp, hãy sử dụng tiếng vang:

cho f trong * ; làm
 echo mv $f "$(md5sum "$i")"
xong

sẽ chỉ ra lỗi của bạn.

BTW, tên biến viết hoa [A-Z] thường được sử dụng để giao tiếp với các ứng dụng. Nếu bạn sử dụng tên viết thường [a-z] trong tập lệnh của mình, bạn sẽ không bao giờ trùng lặp.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.