Xóa các tệp pesky .DS_Store này


13

Nếu bạn sử dụng OS X thì bạn có thể quen với các tệp ".DS_Store" khét tiếng được tạo ra do sử dụng Finder.

Thách thức là viết mã sẽ đi qua toàn bộ hệ thống tệp và xóa bất kỳ tệp nào có tên ".DS_Store".

Golf mã cổ điển - chiến thắng mã ngắn nhất.


Làm rõ:

  • không cần xóa bất kỳ tệp .DS_Store nào yêu cầu siêu người dùng; giả sử không có tập tin như vậy tồn tại.

  • chỉ nên xóa các tệp .DS_Store có liên quan và không có gì khác.


3
Mã có cần xóa các tệp .DS_Store yêu cầu siêu người dùng không (tôi có cần gọi sudo không)?
Kaya

1
@Kaya Câu hỏi hay: không cần xóa các tập tin đó.
arshajii

27
Xóa các tập tin không có tên .DS_Storecũng không sao؟
Joey Adams

1
@JohannesKuhn Bản chỉnh sửa mới nhất nên được hiển nhiên, tôi cho rằng. Tôi đã thêm nó cho mục đích hoàn chỉnh. Nhưng tôi đánh giá cao câu trả lời thông minh, dù sao!
arshajii

1
@Joey - Chuyển câu hỏi sang lĩnh vực quân sự - ví dụ: hmm, quân đội Hoa Kỳ, một cách ngẫu nhiên ^^. Và thay thế tập tin có tên là ".DS_Store" bằng cách giết người. Và bạn sẽ thấy rằng yêu cầu chỉ có một điều là không rõ ràng.
Nicolas Barbulesco

Câu trả lời:


14

zsh, 19

rm -f /**/.DS_Store

(Làm 16 cái đó nếu bạn bỏ đi -f.)


12

Bash *, 40 30

find / -name .DS_Store -delete

find / -name .DS_Store -exec rm -f {} \;

Điều này sẽ xử lý nó (không phải là rất golf, không.to.mention tuyệt vời chậm). Bash có vẻ đúng bởi vì chúng ta không phải đối phó với bất kỳ "hệ thống nhập khẩu" vô nghĩa nào. Nếu bạn muốn yêu cầu thực thi trong bất kỳ môi trường nào, hãy thêm 4 ký tự cho bashvà 1 cho nguồn cấp dữ liệu.

* bất kỳ vỏ nào tôi đoán, chỉ cần không thể thoát khỏi thói quen giả sử vỏ bourne là vỏ duy nhất.


1
Bash chính xác là công cụ phù hợp cho điều đó.
Julian Kuhn

1
Những loại findcó OS X? Với GNU findthậm chí còn ngắn hơn : find / -name .DS_Store -delete.
việc

1
Tùy thuộc vào danh sách đối số của Wikipedia quá dài lỗi lỗi và yêu cầu bash4 hoặc mới hơn với globstartùy chọn shell được bật, hoặc zsh: rm /**/.DS_Store.
manatwork

1
Bạn không làm bất cứ điều gì cụ thể về bash, vì vậy nó cũng có thể là sh.
Peter Taylor

10
Nó xóa .DS_Storethư mục của tôi , nơi tôi có những thứ quan trọng.
Konrad Borowski

9

Ruby: 38 33 ký tự

File.delete *Dir['/**/.DS_Store']

2
Dir[...]là một phím tắt cho Dir.glob(...), điều này sẽ giúp bạn tiết kiệm 5 ký tự.
Patrick Oscar

3
Argh! Tôi biết có một cách ngắn hơn, nhưng tôi đã tìm kiếm nó trong Kernel. Cảm ơn bạn, @padde.
manatwork


0

Vỏ, 25

locate .DS_Store|xargs rm

Yêu cầu locatecơ sở dữ liệu làm việc .


3
Cũng yêu cầu các đường dẫn không có ký tự khoảng trắng.
manatwork


0

CMD, 17

del/s "/.DS_Store

Khá đơn giản.

/slà cần thiết để tìm kiếm trong các thư mục con là tốt.
"được sử dụng để thoát /char mà nếu không được hiểu là đối số (không hợp lệ).


-1

tìm, 38

Các previus findgiải pháp là sai đơn giản: nó có nghĩa là tất cả mọi thứ để xóa tên.DS_Store trong đó có thư mục, liên kết, tập tin đặc biệt vv

Nhưng:

find / -type f -name .DS_Store -delete

đó là giải pháp tối thiểu sử dụng find.

DISCLAMER : Tôi thực sự khuyên bạn không nên sử dụng giải pháp này trên hộp * nix thực: cố gắng xóa một cái gì đó đệ quy từ đó /là một ý tưởng rất tồi . Bạn đã được cảnh báo.

CHỈNH SỬA :

Nếu sự khác biệt giữa các tệp, tệp giám đốc, liên kết (cứng và tượng trưng), tên ống, ổ cắm, tệp đặc biệt, hệ thống tệp giả không rõ ràng với bạn, tôi đề nghị google một số thuật ngữ chưa biết này. Bạn sẽ ngạc nhiên, khôn ngoan hơn và ít mắc các lỗi (catstrofic) hơn.

EDIT2 : Thậm chí còn phù hợp hơn: OP đã viết "Mã chỉ nên xóa các tệp .DS_Store có liên quan và không có gì khác." : vì vậy, nếu ai đó quan tâm để đọc các yêu cầu nhàm chán , tất cả các giải pháp loại bỏ nhiều hơn các tệp này đều hài hước, thông minh, ect. nhưng sai .


findGiải pháp trước đây là chính xác. Câu hỏi nói rằng xóa xóa bất kỳ tập tin có tên ".DS_Store". Vì vậy, không có yêu cầu đặc biệt dựa trên loại tập tin.
manatwork

@ manatwork: vô nghĩa: một tập tin là một thứ khác với một thư mục. Dọc theo đường xoắn của bạn, giải pháp tốt nhất vẫn là rm -rf /
DavAlPi

2

3
Ồ, và một điều nữa: Trong môn đánh gôn, mục tiêu là có được giải pháp ngắn nhất, vì vậy nếu bạn có thể tiết kiệm một vài ký tự bằng cách đưa ra các yêu cầu có lợi cho mình, thì cũng vậy. Bạn có thể lưu 8 ký tự bằng cách coi mọi thứ là tệp, giống như unix. PS: Đâu là bất ngờ? Thực tế là một số người từ chối các công chúa UNIX cơ bản?
Julian Kuhn

1
Bây giờ tôi đã có một câu trả lời tốt hơn , một cái gì đó mà mọi người ở đây có thể hiểu.
DavAlPi
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.