Quản lý ổ đĩa - tìm kiếm các tệp hiếm khi được sử dụng (vì vậy tôi có thể xóa chúng để lấy dung lượng)


0

Tôi có một máy chủ nhỏ đang bắt đầu rất đầy đủ.

Tôi muốn xóa tất cả các tệp cũ chưa được mở hoặc sửa đổi trong một thời gian dài.

Có cách nào để tìm kiếm toàn bộ ổ đĩa theo ngày đã mở - và mẫu đơn đặt hàng cuối cùng được mở gần đây nhất?

Câu trả lời:


2

Thật kỳ lạ, tôi chỉ đang chạy một dự án để thu dọn dữ liệu cũ / lịch sử của công ty.

Tôi đang sử dụng tập lệnh powershell mà tôi đã viết như dưới đây để xuất ra tệp CSV cho tất cả các tệp mà nó đi qua. Sau đó tôi sử dụng Excel để sắp xếp dữ liệu cho cột nào hữu ích nhất đối với tôi.

Get-ChildItem C:\*path* -Recurse | Select-Object Name, CreationTime, LastAccessTime, Directory,  @{Name="Kbytes";Expression={$_.Length / 1Kb}} | Export-CSV xxxxxxx.csv

Bạn có thể sao chép ở trên sau đó dán vào notepad, thay đổi đường dẫn đến nơi lưu tệp của bạn (cục bộ là tốt nhất mặc dù ổ đĩa được ánh xạ sẽ hoạt động) sau đó lưu thành "filename.ps1"

Nếu bạn gặp phải bất kỳ lỗi nào khi cố gắng chạy tập lệnh powershell, hãy cho tôi biết và tôi có thể tư vấn cho phù hợp.


Tôi khuyên bạn chỉ nên bỏ cái này trên bảng điều khiển PowerShell, thay vì chạy nó dưới dạng PS1. Tiết kiệm rắc rối của việc phải làm việc xung quanh ExecutPolicy và như vậy. Tôi thích sự bổ sung Export-CSV!
Iszi

Công việc tốt trên giá trị tính toán cho Kbytes, quá. Tôi không nhận ra bạn có thể làm điều đó.
Iszi

@Iszi Tôi nghĩ bạn đúng về ExecutPolicy - làm thế nào tôi có thể rơi thẳng vào powershell? kéo và thả tập tin txt?
ruben_KAI

@RubenBaden Sao chép / dán.
Iszi

1
@RubenBaden Không có trong thư mục mà tập lệnh powershell được chạy .. hoặc là trước hoặc xxxxx.csv đặt một đường dẫn như c: \ temp \ xxxxxx.csv và nó sẽ ở đó :)
CharlesH

0

PowerShell:

Get-ChildItem \ -Recurse | Sort-Object LastAccessTime | Select-Object FullName, LastAccessTime

Điều này sẽ tìm thấy tất cả các tệp và thư mục trên ổ đĩa hiện tại, sắp xếp chúng theo thứ tự tăng dần vào lần cuối cùng chúng được truy cập, và hiển thị đường dẫn đầy đủ và thời gian truy cập cuối cùng của chúng.

Điều này có thể sẽ mất một lúc, đặc biệt là trên các ổ đĩa hệ thống hoặc các ổ đĩa khác có số lượng lớn tệp và / hoặc thư mục. Tuy nhiên, bạn không nên sử dụng tiêu chí này một mình khi chọn dọn dẹp các tệp trên ổ đĩa hệ thống hoặc trong khu vực lưu trữ tệp hoặc dữ liệu chương trình - bạn có thể phá vỡ nghiêm trọng mọi thứ nếu bạn làm như vậy. Chỉ sử dụng dữ liệu này cho dữ liệu người dùng như tài liệu, hình ảnh, video, v.v.

PowerShell cũng cung cấp cho bạn nhiều tùy chọn hơn để làm việc với dữ liệu. Vì @CharlesH đã trình bày trong tập lệnh của anh ấy, bạn có thể chuyển đầu ra thành tệp CSV thay vì chỉ để nó ở bàn điều khiển. Bạn cũng có thể thực hiện một số bộ lọc theo kích thước tệp và các thuộc tính khác hoặc định dạng dữ liệu để hiển thị nhiều hơn hoặc ít dữ liệu hơn và hiển thị nó theo cách thân thiện hơn với bạn.


0

Một cách tiếp cận khác là sử dụng TCC từ http://jpsoft.com/all-doads/doads.html (phiên bản LE miễn phí). Đây là phiên bản được nâng cấp nhiều của CMD, cho phép bạn đặt hàng và chọn theo từng ngày của tệp, ví dụ:

dir /t:a /od                         - lists files in access time order;
dir /[da1980-1-1,2008-12-31]         - selects files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31] /n - shows deletable files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31]    - deletes files not accessed since 2008.

Lựa chọn phạm vi cũng có thể được sử dụng với copymovecác lệnh, nếu bạn muốn lưu trữ tệp thay vì xóa chúng.

Nếu (như tôi) bạn thấy PowerShell hơi nản chí, bạn có thể thích điều này.


1. Get-ChildItem | Sort-Object LastAccessTime, 2. Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008}, 3. Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008} | Remove-Item -WhatIf, 4 Get-ChildItem | Where-Object {$_.LastAccessTime.Year -le 2008} | Remove-Item.. Cho rằng PowerShell miễn phí 100%, đi kèm với Windows 7+, có các lệnh và tham số thường dễ đọc và dễ phân tích hơn con người so với cú pháp trong câu trả lời này có hệ thống trợ giúp tích hợp cộng với yêu tinh của cộng đồng trực tuyến hỗ trợ, tôi không chắc làm thế nào nó "đáng ngại" hơn TCC.
Iszi

@Iszi - Tôi không tranh chấp bất cứ điều gì bạn nói, mặc dù các lệnh của tôi sẽ quen thuộc và dễ đọc đối với những người biết CMD. Tôi đã phát hiện ra TCC và các tiền thân 4DOS và 4NT trước khi PowerShell xuất hiện. Tôi đã quen với shell Unix và TCC & co cung cấp rất nhiều khả năng còn thiếu từ CMD. Tôi chắc chắn rằng PowerShell không khó học hơn so với hệ vỏ Unix, nhưng TCC quen thuộc và mạnh mẽ đến mức tôi không bao giờ cần phải học nó, mặc dù tôi chắc chắn rằng tôi sẽ nắm bắt được tầm đó nếu tôi thấy mình bị giới hạn bởi TCC. Ngoại trừ việc có một số triển khai Windows của Korn shell ...!
AFH

Tôi nhận được rằng DIR /T:A /ODcó thể là quen thuộc với người sử dụng CMD, nhưng tôi không thấy như thế nào DIRcú pháp, hoặc DIRcú pháp lọc nên. DEL /Strong CMD thực hiện một cái gì đó hoàn toàn khác biệt và DIRcũng không DELcó bất kỳ chức năng lọc riêng nào tương tự như những gì được sử dụng ở đây mà tôi biết hoặc có thể tìm thấy.
Iszi

Nếu bạn chỉ đơn thuần nói về sự giống nhau trong tên lệnh, PowerShell có các bí danh tích hợp để chuyển hướng nhiều lệnh phổ biến của CMD sang các lựa chọn thay thế PowerShell mới. (Ví dụ: dircác cuộc gọi Get-ChildItem.) PowerShell cũng có thể sử dụng trực tiếp hầu hết các lệnh CMD gốc khác và nhiều lệnh bên ngoài mà không cần bất kỳ sự trợ giúp đặc biệt nào.
Iszi

@Iszi - Bộ lọc là phần mở rộng TCC, là toàn bộ điểm; và DEL /Sthực hiện tương tự trong TCC như trong CMD (xóa khỏi thư mục hiện tại và thư mục con). Tôi phải nhấn mạnh rằng tôi đã không cố làm suy yếu câu trả lời của bạn bằng bất kỳ cách nào, mà chỉ cố gắng đưa ra một giải pháp thay thế có thể hữu ích cho những người có vấn đề liên quan và không thể sử dụng PowerShell (ví dụ trên Windows trước đó).
AFH
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.