Tôi vừa bị mất một phần nhỏ trong bộ sưu tập âm thanh của mình, bởi một sai lầm ngu ngốc mà tôi đã mắc phải. :-(
GLADLY Tôi đã có một bản sao lưu khá gần đây, nhưng nó vẫn gây khó chịu. Ngoài bạn thực sự, thủ phạm khác làm điều sai trái là mv
, sẽ hiển thị như sau:
Các tập tin âm thanh có một sơ đồ nhất định:
ARTIST - Some Title YY.mp3
thông YY
số kỹ thuật năm gồm 2 chữ số.
mkdir 90<invisible control character>
(Cho đến thời điểm này, tôi không biết rằng tôi thực sự đã gõ một phần ba ký tự dư thừa vô hình ...!)
Thay vì có tất cả trong một thư mục, tôi muốn có tất cả nhạc trong thập niên 1990 trong một thư mục. Vì vậy, tôi đã gõ:
find . -name '* 9?.mp3' -exec mv {} 90 \;
Không quá khó để có được ý tưởng những gì đã xảy ra nhỉ? : ->
Kết quả (thảm họa) là một thư mục trống rỗng có tên '90 gì đó '(với thứ gì đó là ký tự điều khiển "vô hình") và một tệp duy nhất gọi là' 90 ', được ghi đè lên n lần.
TẤT CẢ CÁC PHIM ĐÃ ĐƯỢC. :-(( (chắc chắn)
Wish mv
sẽ kiểm tra kịp thời xem chữ ký của "tệp" đích (nhớ trên * NIX: Mọi thứ là tệp ) có bắt đầu bằng d------
(ví dụ drwxr-xr-x
) không. Và, tất nhiên, liệu đích đến có tồn tại không. Có là một biến thể của kịch bản nói trên, khi bạn chỉ đơn giản là quên để mkdir
thư mục đầu tiên. (nhưng tất nhiên, bạn cho rằng nó ở đó ...)
Ngay cả hệ điều hành ghét thú cưng của chúng tôi bắt đầu từ thủ đô W DOES DO NÀY. Bạn thậm chí còn được nhắc chỉ định loại đích (tệp? Thư mục?) Nếu bạn yêu cầu.
Do đó, tôi tự hỏi nếu chúng ta * NIXers vẫn phải tự viết cho mình một " mv
scriptlet" chỉ để tránh những loại bất ngờ không mong muốn này.
mv
Không phải là vấn đề ở đây, về mặt kỹ thuật, nó không biết rằng bạn đang di chuyển một loạt các tệp. Bạn đang chạy mv
một lần cho mỗi tệp. Đó là cách làm find -exec ;
việc. Nếu bạn đã sử dụng find -exec +
(như trong một số ý kiến) mv
sẽ hét lên ngay khi nó có nhiều hơn một đối số.
mv
cho mỗi tệp đơn lẻ có vẻ ít suy nghĩ hơn, nhưng nó sẽ (như tôi đã nói trước đây) là giải pháp lành mạnh duy nhất một khi các tệp nguồn nằm rải rác giữa các thư mục con khác nhau. Trong trường hợp thử nghiệm của tôi, các tệp nguồn đều nằm trong một thư mục không có nghĩa đó là trường hợp thử nghiệm thực tế của tôi . Thực tế nó chỉ là một sự đơn giản hóa, bởi vì sau này tôi có thể dễ dàng xây dựng nó. Thêm vào đó, nó làm cho các câu hỏi ít tốn thời gian hơn để đọc do độ dài giảm. :)
mv
yêu cầu điểm đến tồn tại? mv oldfile newfile
là cách để đổi tên một tập tin và thật ngớ ngẩn khi mong đợi newfile
tồn tại và trở thành một thư mục.
.mp3
nên có ở đó với cái tên90
, nó có thể là một cái mà bạn không có bản sao lưu.