Tìm tập tin nhỏ nhất


19

Mục tiêu:

Tạo một chương trình để tìm tệp nhỏ nhất trong thư mục hiện tại.

  • Kích thước tệp có thể được đo bằng byte hoặc ký tự.
  • Nếu nhiều tệp có cùng kích thước, bạn có thể chọn một hoặc hiển thị tất cả chúng.
  • Bạn có thể giả sử sẽ có ít nhất một tệp trong thư mục và không có tệp nào có kích thước bằng 0.
  • Giả sử rằng tất cả các tệp trong thư mục có thể được tải bằng ngôn ngữ bạn đang sử dụng.

  • Giả sử rằng không có thư mục trong thư mục hiện tại.

Đầu vào:

Chương trình không nên lấy bất kỳ đầu vào nào từ người dùng, trừ khi:

  • Nếu ngôn ngữ của bạn không có "thư mục hiện tại", nó có thể yêu cầu người dùng cho tên / đường dẫn thư mục.
  • Nếu ngôn ngữ của bạn không thể truy cập trực tiếp các tệp trên máy tính của bạn, nó có thể cho phép người dùng tải lên các tệp. (Ví dụ: JavaScript)

Đầu ra:

Tên của tệp nhỏ nhất sẽ được hiển thị.

  • Biểu tượng hàng đầu / dấu được cho phép, miễn là rõ ràng tệp nào đã được chọn.
  • (In danh sách tất cả các tệp là trái với quy tắc).

Ghi chú:

  • Lỗ hổng tiêu chuẩn không được phép.
  • Bạn không thể sửa đổi / tạo / xóa các tập tin trong thư mục để thay đổi kết quả.
  • Đây là ; câu trả lời ngắn nhất (tính bằng byte) thắng.

1
Chúng ta có thể giả sử các tập tin có thể có kích thước bằng 0?
Rɪᴋᴇʀ

Ngoài ra, "giả sử rằng tất cả các tệp trong thư mục có thể được truy cập" nghĩa là gì? điều đó có nghĩa là các tập tin ẩn không cần phải được hiển thị?
Rɪᴋᴇʀ

2
Tôi có thể cho rằng không có thư mục trên thư mục hiện tại? Nó làm cho tất cả sự khác biệt nếu bạn có một chức năng ngôn ngữ trả về cả tệp và thư mục thay vì chỉ các tệp!
sergiol

1
Không cần thiết. Bạn có thể cho rằng không có thư mục nào trong thư mục hiện tại không rõ ràng và không làm mất hiệu lực bất kỳ câu trả lời nào.
Dennis

1
(xin lỗi tôi đã không trả lời sớm hơn, kết nối internet của tôi bị hỏng trong vài ngày) Vấn đề tôi gặp phải khi cho phép bạn bỏ qua các tập tin ẩn là nó dường như mở rất nhiều sơ hở. Cho phép bạn bỏ qua các tệp "khó truy cập hơn một chút" có nghĩa là mọi người có thể làm gì đó như chỉ kiểm tra 9 tệp đầu tiên vì nó tiết kiệm được một vài byte.
12Me21

Câu trả lời:


7

Vim 12 byte

!!ls -Sa
Gd{

Hãy thử trực tuyến!

Giải trình:

!!là lệnh lọc . Nó chuyển nội dung của dòng hiện tại sang một lệnh hệ thống tùy ý và gửi đầu ra trở lại vào bộ đệm. Nó hữu ích cho việc sử dụng các công cụ bên ngoài cho những thứ mà bash tốt hơn vim, ví dụ !!revđể đảo ngược dòng hiện tại hoặc !Gxxdđể hexdump bộ đệm. Trong trường hợp của chúng tôi, bộ đệm trống nên nó tương đương với :r!ls, nó chỉ cung cấp đầu ra của lệnh vào dòng hiện tại.

Bây giờ con trỏ ở trên dòng 1 và chúng tôi muốn xóa mọi dòng trừ dòng cuối cùng. Cách tiếp cận ngây thơ là

G       " Go to the last line
 k      " Go up one line
  d     " Delete:
   gg   "   Everything up to the first line

Nhưng chúng ta có thể làm tốt hơn. Giống như tôi đã giải thích trong mẹo này , thường{ có thể (nhưng không phải luôn luôn) tương đương với . Ở đây, nó thậm chí còn tốt hơn. Bởi vì các chuyển động là dựa trên ký tự , không dựa trên dòng như là, chúng ta không cần phải đi lên một dòng đầu tiên, để lại cho chúng tagggg

Gd{

16

Bash + coreutils, 13 byte

ls -Sar|sed q

Giải trình:

ls -Sar|sed q
ls            # list files
   -S         # sorted, biggest first
     a        # show hidden files
      r       # reversed (smallest first)
       |sed q # q is quit at first line that matches given regex, 
              # given regex is empty so guaranteed match.         

Đăng bài này là câu trả lời của riêng tôi, nhưng tôi nghĩ nó quá giống với câu trả lời của bạn. ls -1Sa|tail -1ngắn hơn 3 byte và có đầu ra sạch hơn.
orlp

@orlp cảm ơn! ..
Rɪᴋᴇʀ

1
Tôi không nghĩ rằng bạn cần '-1', ống sẽ tự động đặt một tệp trên mỗi dòng.
GB

@EasterlyIrk Tôi nghĩ GB là đúng. nếu lsphát hiện đầu ra là tới terminal thì nó sẽ định dạng đầu ra thành nhiều cột. Nhưng nếu đầu ra là một đường ống, nó sẽ chỉ làm 1 trên mỗi dòng. So sánh lsvớils|cat
Chấn thương kỹ thuật số

Hai byte ngắn hơn:ls -Sar|sed q
Chấn thương kỹ thuật số

8

Python 2 3, 94 76 74 54 byte

-18 byte nhờ @orlp
-2 byte nhờ @Jonathan Allan
-20 byte nhờ thay đổi thông số kỹ thuật thách thức

from os import*
print(min(listdir(),key=path.getsize))

print min(filter(path.isfile,listdir(".")),key=path.getsize)sạch hơn và ngắn hơn đáng kể.
orlp

Lưu hai byte chuyển sang Python 3 vì đây "."là mặc định. print(min(filter(path.isfile,listdir()),key=path.getsize))
Jonathan Allan

Ngoài ra tôi đếm 76 chứ không phải 77.
Jonathan Allan


Các byte không liên quan sẽ là do một dòng mới, không cần thiết cho Python. Ngoài ra, do thách thức đã được cập nhật để tuyên bố rằng không có thư mục con nào hiện diện, toàn bộ filterbit là không cần thiết. Điều này cũng không hoạt động trong Python 3, vì printlà một hàm. Những điều sau đây sẽ hoạt động và ngắn hơn đáng kể:print(min(listdir(),key=path.getsize))
Mego

8

PowerShell , 30 24 21 byte

(ls|sort le*)[0].Name

Hãy thử trực tuyến!

lslà một bí danh cho Get-ChildItem. Đó là đường dẫn sort-objectvới lengththuộc tính, vì vậy các tệp được sắp xếp theo kích thước. Chúng tôi lập chỉ mục đó (...)[0]để lấy cái đầu tiên (nghĩa là nhỏ nhất), và sau đó lấy cái .Nameđó. Đầu ra thông qua ngầm Write-Outputxảy ra khi hoàn thành chương trình.

Đã lưu 6 byte vì chúng tôi đảm bảo rằng chỉ có các tệp tồn tại trong thư mục. Đã lưu thêm 3 nhờ ConnorLSW.


2
Bạn có thể không thoát khỏi các -filetập tin chỉ trong thư mục hiện tại?
Mutantoe

@Mutantoe Có - điều đó đã được chỉnh sửa thành thử thách sau khi tôi đăng câu trả lời này. Cảm ơn!
admBorkBork

bạn có thể sử dụng sort le*để cạo một số byte vì powershell sẽ chấp nhận nó.
colsw

@ConnorLSW Vâng, tất nhiên. Cảm ơn!
admBorkBork

7

Ruby, 61 40 38 37 byte

Cảm ơn GB và Ink Value

p Dir[?*,".*"].min_by{|x|File.size x}

Bạn có thể dùng ?. thay vì Dir.pwd và min_by {} để lấy tệp nhỏ nhất. Dir.foreach(?.).min_by{|x|File.size x}nhận được kết quả tương tự trong 38 byte.
GB

@GB Cảm ơn!
dkudriavtsev

Thật đáng tiếc khi các tệp "tất cả" mà ngôn ngữ có thể truy cập phải được xem, bởi vì Dir[?*]nó ngắn hơn nhiều nhưng không bao gồm các tệp Unix bị ẩn như .bash_profile...
Value Ink

Có lẽ Dir [? *, ".? *"] Có thể hoạt động. Tôi chưa thử. Và nó ngắn hơn.
GB

@GB Nó thực sự là như vậy Dir[?*,".*"]. Chuỗi Glob .?*sẽ không khớp với tập tin .anếu nó tồn tại.
Mực giá trị

6

Toán học, 35 byte

FileNames[]~MinimalBy~FileByteCount

FileNames[]tạo một danh sách tên của tất cả các tệp (và thư mục) trong thư mục hiện tại; ~MinimalBy~FileByteCountchọn tên của tệp có số byte nhỏ nhất. FileByteCountném một loạt lỗi khi nó được áp dụng cho các thư mục, nhưng các lỗi không làm hỏng chương trình.


6

Java 7, 149 142 byte

String f(){String n="";long s=-1>>>1,p;for(java.io.File f:new java.io.File(".").listFiles())if((p=f.length())<s){n=f.getName();s=p;}return n;}

Hãy thử trực tuyến!

-7 byte nhờ CAD97


Tôi nghĩ rằng bạn muốn Tệp :: độ dài không phải Tệp :: getTotalSpace
CAD97

Java 8 chưa được kiểm tra: ()->java.utils.stream(new java.io.File(".").listFiles()).max((a,b)->a.length()-b.length).get().getName()cho 104 byte
CAD97

@ CAD97 Bạn nói đúng! Tôi đã nghĩ gì ...
Chọc

6

SH (Linux / Unix) 15 14 13 14 byte

ls -aS|tail -1

-S sắp xếp theo kích thước (giảm dần),

-rđảo ngượctail -1xuất tập tin cuối cùng trong danh sách.

@ Dennis Cảm ơn bạn đã lưu 1 byte @Dani_l Cảm ơn bạn đã lưu 1 byte.


Điều đó tìm thấy tập tin lớn nhất , không?
Dennis

Đừng bận tâm, tôi mệt mỏi. Bạn có thể sử dụng tailmặc dù thay vì đảo ngược, và -1là một tốc ký cho -n1.
Dennis

@Dennis Cập nhật
Abel Tom

@EasterlyIrk Bây giờ thì nên :)
Abel Tom

@AbelTom tuyệt, cảm ơn vì đã sửa.
Rɪᴋᴇʀ

4

MATLAB / Octave, 52 48 byte

d=dir;[~,n]=min([d.bytes]./~[d.isdir]);d(n).name

Giải trình

Điều này nhận được một danh sách thư mục của tất cả các tập tin và thư mục trong thư mục hiện tại bằng cách sử dụng dir. Đầu ra của dirstructchứa tên tệp, cho dù đó là thư mục hay không, kích thước (tính bằng byte), v.v.

Sau đó, chúng ta có thể lấy một mảng các kích thước của từng byte [d.bytes]và thực hiện phép chia phần tử theo boolean cho biết đó có phải là thư mục hay không ~[d.isdir]sẽ mang lại Infthư mục (chia cho 0) và kích thước theo byte theo cách khác (chia theo 1).

Chúng tôi tìm thấy chỉ số tối thiểu của mảng này bằng cách sử dụng đầu ra thứ hai của min và sử dụng chỉ mục đó vào cấu trúc ban đầu và hiển thị tên vớid(n).name


Bạn nên thêm disp(...)xung quanh đầu ra để in đúng. Mặt khác, ví dụ, nếu có một tệp được gọi anslà không phải là nhỏ nhất trong thư mục thì đầu ra sẽ không rõ ràng về việc tệp nào nhỏ nhất đối với bất kỳ ai không quen thuộc với MATLAB.
Tom Carpenter

@TomCarpenter Hmmm Tôi đã giải thích "Biểu tượng dẫn đầu / dấu vết được cho phép, miễn là rõ ràng tệp nào đã được chọn" có nghĩa là nó ans = ổn
Suever

Tôi vừa nhận ra MATLAB thêm ẩn .(thư mục hiện tại) và ..(thư mục ở trên), vì vậy không thể xóa thư mục kiểm tra. Xin lỗi vì điều đó.
Tom Carpenter

4

Scala, 52 byte

Phiên bản cũ, 79 byte

new java.io.File(".").listFiles.map(a=>a.getName->a.length)sortBy(_._2)apply(0)

Điều chỉnh theo lời khuyên của jaxad0127. Bây giờ chỉ còn 52 byte.

new java.io.File(".").listFiles.sortBy(_.length)head

Sử dụng đầu thay vì áp dụng (0) là ngắn hơn. Ngoài ra, phương thức toString của File vẫn ổn, không cần phải gọi lấy tên.
jaxad0127

4

Mẻ, 43 39 35 byte

@dir/b/os|(set/pf=&call echo %%f%%)

Đầu ra bao gồm một không gian hàng đầu vì một số lý do, nhưng may mắn là điều đó được cho phép. Chỉnh sửa: Bây giờ giả sử không có thư mục để lưu 4 byte.


Oh, sử dụng / p như thế, dang thông minh!
admBorkBork

@AdmBorkBork Ah, tôi đã không nhận thấy điều đó được cho phép, cảm ơn!
Neil

Bạn được đảm bảo rằng không có thư mục con nào tồn tại (thử thách đã được cập nhật) để bạn có thể loại bỏ /a-d.
admBorkBork

4

Perl 6 ,  33 32 31  16 byte

'.'.IO.dir.grep(*.f).min(*.s).put

Thử nó

put '.'.IO.dir.min:{try .s//Inf}

Thử nó

put $*CWD.dir.min:{try .s//Inf}

Thử nó

put dir.min: *.s

Thử nó

Mở rộng:

put        # print with trailing newline
dir        # the list of files in the current directory
.min:      # find the minimum by
  *.s      # calling the `s` method (size) in a Whatever lambda

Dạng hàm dirmặc định $*CWDvà mô tả tác vụ cho biết bạn có thể cho rằng sẽ không có bất kỳ thư mục nào, vì vậy tôi nghĩ bạn có thể rút ngắn điều đó dir.min(*.s).put.
smls

Khi tôi viết bài này, nó nói chương trình phải bỏ qua các thư mục.
Brad Gilbert b2gills

4

J , 21 20 byte

>{.,(/:2&{"1)1!:0'*'

Đã lưu một byte nhờ @ Conor .

Giải trình

>{.,(/:2&{"1)1!:0'*'
                 '*' Glob all files in current directory
             1!:0    Table of file metadata in that directory
       2&{"1         Get the file size of each
     /:              Sort the files by that
   ,                 Flatten
 {.                  Get the first value
>                    Unbox

@ ConorO'Brien Cảm ơn
dặm

3

Tệp BATCH, 77 72 63 byte

@FOR /F "tokens=*" %%G IN ('dir/o-s/b') DO @SET F=%%G
@ECHO %F%

Không có tương đương trực tiếp với headhoặctail trong BATCH, ít nhất là theo hiểu biết của tôi, vì vậy đây là một công việc lặt vặt. (với nhiều sự trợ giúp từ @Neil - cảm ơn!)

Các dirlệnh, với /o-sđể sắp xếp trong kích thước tập tin giảm dần, và /bđến đầu ra chỉ là tên tập tin. Chúng tôi lặp qua những cái có FOR /F, đặt biến Fthành tên tệp mỗi lần. Cuối cùng, chúng tôi chỉ xuất ra cái cuối cùng với ECHO %F%.

Đã lưu thêm 9 byte nhờ Neil và nhờ đảm bảo rằng không có thư mục nào hiện diện.


1
FORBiến của bạn cần hai %s để làm việc trong một tập lệnh. Mặt khác, một vài mẹo chơi gôn: 1. Không sử dụng @ECHO OFFtrên các tập lệnh ngắn, thêm một @dòng vào mỗi dòng và sau DO. 2. Xóa không gian trước DO. 3. Không gian và :s không cần thiết trong dirlệnh.
Neil

1
@Neil Ack, cảm ơn. Xin lỗi, khá hoen gỉ vì tôi đã làm PowerShell ... Cảm ơn!
admBorkBork

3

PHP 84 62 byte

$t=array_map(filesize,$g=glob('*'));asort($t);echo$g[key($t)];

Vì câu hỏi đã được cập nhật với giả định rằng sẽ không có thư mục nào trong thư mục hiện tại, tôi đã có thể xóa nội dung kiểm tra tệp và đánh golf này xuống.


Đây là câu trả lời cũ của tôi:

$t=array_map(filesize,$g=array_filter(glob('*'),is_file));asort($t);echo$g[key($t)];

Đây là điều tốt nhất tôi có thể làm. Có lẽ có một cách tốt hơn tôi đang thiếu.

$t=array_map(              # visit each array element and...
    filesize,              # map each filename to its filesize...
    $g=array_filter(       # using an array of...
        glob('*'),         # all files and directories...
        is_file            # filtered by files...
    )                      # 
);                         # 
asort($t);                 # sort the array of filesizes, then...
echo$g[key($t)];           # print element from the array of files using the first key of the sorted array as an index

2

Node.js (sử dụng walk ), 114 byte

Bỏ qua dòng mới:

require('walk').walk(__dirname).on('file',(r,s,n)=>
(m=s.size>m.size?m:s,n()),m=0).on('end',_=>console.log(m.name))

Điều này gọi một walker đi qua thư mục hiện tại ( __dirname) và cho mỗi tệp gọi một hàm với stat của nó svà một hàm tiếp theo n()phải được gọi để tiếp tục truyền tải. Sau đó, tại end, nó in một tên tệp với số sizebyte tối thiểu được tìm thấy. s.size>m.sizetrả về falsekhi m.sizeundefined, vì vậy sau lần gọi lại đầu tiên, mbằng với tệp đầu tiên được tìm thấy và tiếp tục từ đó bình thường.


2

R, 36 byte

x=file.info(y<-dir())$s;y[x==min(x)]

Giải thích

file.info()trả về một data.frame"thông tin tệp" khi được cung cấp một ký tự hoặc vectơ ký tự của tên tệp / thư mục mà khi được sử dụng trong danh sách các tệp / thư mục trong thư mục hiện tại ( dir()), trông giống như:

                                                               size isdir mode               mtime               ctime               atime exe
Polyspace_Workspace                                               0  TRUE  777 2014-11-28 17:29:25 2014-11-28 17:29:25 2014-11-28 17:29:25  no
Python Scripts                                                    0  TRUE  777 2016-03-21 23:59:41 2016-03-21 23:59:41 2016-03-21 23:59:41  no
R                                                                 0  TRUE  777 2015-12-23 20:11:02 2015-12-23 20:11:02 2015-12-23 20:11:02  no
Rockstar Games                                                    0  TRUE  777 2015-04-14 12:23:05 2015-04-14 12:23:03 2015-04-14 12:23:05  no
TrackmaniaTurbo                                                   0  TRUE  777 2016-03-24 17:15:05 2016-03-24 13:13:48 2016-03-24 17:15:05  no
ts3_clientui-win64-1394624943-2014-06-11 03_18_47.004772.dmp 314197 FALSE  666 2014-06-11 02:18:47 2014-06-11 02:18:47 2014-06-11 02:18:47  no

Sau đó, chúng ta chỉ cần tìm tên của tệp mà sizecột (viết tắt sử dụng $s) là nhỏ nhất. Do đó, nếu có nhiều hơn một tệp có kích thước nhỏ nhất, tất cả sẽ được trả về.

Phần thưởng: nếu chúng tôi cũng muốn bỏ qua các thư mục trong thư mục hiện tại, chúng tôi có thể chỉ cần tìm kích thước khi isdir == FALSE: x=file.info(y<-dir());y[x$s==min(x$s[!x$i])]hóa ra là 44 byte.


Bit muộn, nhưng file.sizengắn hơn vì bạn không phải làm $ssau đó.
JAD


2

SmileBASIC, 110 byte

DIM F$[0]FILES"TXT:",F$FOR I=0TO LEN(F$)-1F$[I][0]="TXT:
S=LEN(LOAD(F$[I],0))IF!Z||S<Z THEN Z=S:B=I
NEXT?F$[B]

Chỉ nhìn vào TXT:các tệp, vì DAT:các tệp không thể được tải trừ khi bạn đã biết kích thước của chúng, khiến cho không thể tải ngẫu nhiên.


Làm thế nào để bạn tải một DAT: tập tin? Bạn có thể bắt buộc mọi kích cỡ tên / tập tin trong thư mục không?
Pavel

Cố gắng tải DAT:tệp 3 chiều vào mảng 2 chiều (ví dụ) sẽ gây ra lỗi, vì vậy bạn không thể ép buộc nó. Bạn chỉ cần biết số lượng kích thước trước đó, mà bạn thường làm.
12Me21

Bạn có thể tải DAT: tập tin 2-d vào mảng 3-d không? Sau đó, bạn có thể tạo một mảng kích thước tối đa. Và bạn không thể bắt lỗi theo bất kỳ cách nào?
Pavel

Không, điều đó sẽ gây ra lỗi không khớp Loại. Và cũng không có cách nào để bắt lỗi cả.
12Me21


1

C #, 277 byte

Không phải là ngắn nhất, nhưng bạn mong đợi gì từ C #?

Chơi gôn

using System.Linq;using static System.IO.Directory;class P{static void Main(){var x=GetFiles(GetCurrentDirectory());var d=new long[]{}.ToList();foreach(var s in x){var b=new System.IO.FileInfo(s).Length;if(!d.Contains(b))d.Add(b);}System.Console.Write(x[d.IndexOf(d.Min())]);}}

Bị đánh cắp

//Linq using for List.Min()
using System.Linq;
//Static using to save bytes on GetCurrentDirectory() and GetFiles()
using static System.IO.Directory;

class P
{
    static void Main()
    {
        //String array containing file paths
        var x = GetFiles(GetCurrentDirectory());
        //Creating a Long array and converting it to a list, less bytes than "new System.Collections.Generic.List<long>()"
        var d = new long[] { }.ToList();
        foreach (var s in x) //Loop through all file paths
        {
            //Getting file size in bytes
            var b = new System.IO.FileInfo(s).Length;
            if (!d.Contains(b))
                //If there isn't already a file with this size in our List, add the file path to list
                d.Add(b);

        }
        //Get index of the smallest Long in our List, which is also the index of the file path to the smallest file, then write that path
        System.Console.Write(x[d.IndexOf(d.Min())]);
    }
}

1

Röda , 32 31 byte

{ls""|sort key=fileLength|pull}

Đây là một hàm ẩn danh sắp xếp các tệp trong thư mục hiện tại theo độ dài tệp và chọn tệp đầu tiên sau đó pull.

Sử dụng nó như thế này: main{ {ls""|sort key=fileLength|pull} }


Rõ ràng là ls""hoạt động tốt như ls".". Tôi nghĩ bạn có thể tiết kiệm một byte từ đó
Kritixi Lithos

@KritixiLithos Có vẻ như. Cảm ơn!
fergusq

0

SmileBASIC 3, 105 byte (cạnh tranh?)

Beats câu trả lời 12Me21 của nhưng vẫn bị không có khả năng để tải DAT file (mà cảm thấy rất tàn nhẫn để được bị loại bỏ xem xét các trường hợp này.)

DIM F$[0],T[0]FILES"TXT:",F$FOR I=0TO LEN(F$)-1F$[I][0]="TXT:
PUSH T,LEN(LOAD(F$[I]))NEXT
SORT T,F$?F$[0]

Phiên bản ngắn hơn ở trên gây khó chịu và nhắc bạn trên mọi tệp để tải, nhưng nó hoạt động. Đối với hai byte nhiều hơn, bạn có thể chặn lời nhắc; thay đổi dòng 2 thành này:

PUSH T,LEN(LOAD(F$[I],0))NEXT

0

Batch File, 33 byte

Các tập tin hàng loạt có khả năng cạnh tranh vừa phải lần này, đủ kỳ lạ.

@dir/os/b>..\q&set/pa=<..\q&"%a%.

Đầu ra

enter image description here


Tìm cách ngăn chặn việc tạo qtrước khi dir/os/bchạy và bạn sẽ tiết kiệm tối đa 6 byte bằng cách không cần đặt tệp đầu ra vào một thư mục riêng.

@dir/os/b>q&set/pa=<q&"%a%

Sẽ luôn xuất ra qdưới dạng tệp nhỏ nhất (trừ khi được gắn với tệp 0 byte khác) vì nó được tạo dưới dạng tệp trống trước khi dir/b/ostập hợp danh sách các tệp.


0

C ++ 17 (gcc) , 180 byte

#include<filesystem>
using namespace std::filesystem;auto f(){std::error_code e;path r;size_t m=-1,s;for(auto&p:directory_iterator(".")){s=file_size(p,e);if(s<m)m=s,r=p;}return r;}

Hãy thử trực tuyến!

Yêu cầu một thư viện tiêu chuẩn gần đây thực hiện std::filesystem.


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.