# List files

**URL:** <https://discourse.julialang.org/t/list-files/22542>\
**Category:** New to Julia\
**Tags:** question, filesystem\
**Created:** [March 30, 2019, 2:15pm UTC](https://discourse.julialang.org/t/list-files/22542 "2019-03-30T14:15:34Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aquaman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aquaman/32/6586_2.png) [@Aquaman](https://discourse.julialang.org/u/Aquaman)\
**Post date:** [March 30, 2019, 2:15pm UTC](https://discourse.julialang.org/t/list-files/22542/1 "2019-03-30T14:15:34Z")

</div>

Hi,

which command can we use for **list files (shell script)** in Julia Terminal Windows?

Best!

---

<div class="post-metadata">

**Author:** ![fredrikekre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fredrikekre/32/1688_2.png) [@fredrikekre](https://discourse.julialang.org/u/fredrikekre)\
**Post date:** [March 30, 2019, 2:28pm UTC](https://discourse.julialang.org/t/list-files/22542/2 "2019-03-30T14:28:33Z")

</div>

[`readdir`](https://docs.julialang.org/en/v1/base/file/#Base.Filesystem.readdir)

---

<div class="post-metadata">

**Author:** ![Aquaman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aquaman/32/6586_2.png) [@Aquaman](https://discourse.julialang.org/u/Aquaman)\
**Post date:** [March 30, 2019, 2:31pm UTC](https://discourse.julialang.org/t/list-files/22542/3 "2019-03-30T14:31:55Z")

</div>

```julia
 readdir()
8-element Array{String,1}:
 ".gitignore"
 ".travis.yml"
 "docs"
 "LICENSE"
 "README.md"
 "REQUIRE"
 "src"
 "test"

```

I cannot find the name of folder and more infos.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [March 30, 2019, 2:53pm UTC](https://discourse.julialang.org/t/list-files/22542/4 "2019-03-30T14:53:04Z")

</div>

I recommend you to read [https://docs.julialang.org/en/latest/base/file/](https://docs.julialang.org/en/latest/base/file/) part of the Julia manual.

I understand you want something like:

```julia
print("Current directory: ", pwd())
foreach(readdir()) do f
       println("\nObject: ", f)
       dump(stat(f)) # you can customize what you want to print
end

```

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [March 30, 2019, 2:53pm UTC](https://discourse.julialang.org/t/list-files/22542/5 "2019-03-30T14:53:07Z")

</div>

You can get the name of the folder you are currently working in with

```julia
pwd() 

```

---

<div class="post-metadata">

**Author:** ![Aquaman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aquaman/32/6586_2.png) [@Aquaman](https://discourse.julialang.org/u/Aquaman)\
**Post date:** [March 30, 2019, 2:55pm UTC](https://discourse.julialang.org/t/list-files/22542/6 "2019-03-30T14:55:06Z")

</div>

in ubuntu terminal, if we use “ls” command in a folder , it shows all names of file and sub-folders in this folder.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [March 30, 2019, 2:56pm UTC](https://discourse.julialang.org/t/list-files/22542/7 "2019-03-30T14:56:21Z")

</div>

Run:

```julia
run(`ls`)

```

or

```julia
read(`ls`, String)

```

to fetch the output

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [March 30, 2019, 2:56pm UTC](https://discourse.julialang.org/t/list-files/22542/8 "2019-03-30T14:56:57Z")

</div>

src and test are subfolders.

---

<div class="post-metadata">

**Author:** ![Roseck16](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roseck16/32/11405_2.png) [@Roseck16](https://discourse.julialang.org/u/Roseck16)\
**Post date:** [November 3, 2019, 11:50pm UTC](https://discourse.julialang.org/t/list-files/22542/9 "2019-11-03T23:50:42Z")

</div>

I have a problem with this. I have a folder with files named as “file\_1”, “file\_2” and so on until “file\_1000”. When I use readdir i get a list of all the files in the order:  
`["file_1", "file_10", "file_100",..., "file_1000"]`  
whereas I want them in the ascendant normal order:  
`["file_1", "file_2", "file_3",..., "file_1000"]`  
Is there another way to read the files in a directory that gives a list like the one I want?

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [November 4, 2019, 12:10am UTC](https://discourse.julialang.org/t/list-files/22542/10 "2019-11-04T00:10:02Z")

</div>

```julia
julia> ls = ["file_1", "file_2", "file_10", "file_3"]
4-element Array{String,1}:
 "file_1" 
 "file_2" 
 "file_10"
 "file_3" 

julia> sort(ls, by=x->parse(Int, match(r"[0-9].*", x).match))
4-element Array{String,1}:
 "file_1" 
 "file_2" 
 "file_3" 
 "file_10"

```

btw, next time use ‘```’ for better readability.

---

<div class="post-metadata">

**Author:** ![Paulo\_Jabardo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paulo_jabardo/32/3196_2.png) [@Paulo\_Jabardo](https://discourse.julialang.org/u/Paulo_Jabardo)\
**Post date:** [November 4, 2019, 11:36am UTC](https://discourse.julialang.org/t/list-files/22542/11 "2019-11-04T11:36:43Z")

</div>

Check out this link

> [@Sorting strings containing numbers, so that "A2" \< "A10"?](https://discourse.julialang.org/t/sorting-strings-containing-numbers-so-that-a2-a10/5372):
>
> I need to sort strings containing numbers. Is there a simple way to sort them, such that, for example, "A2" \< "A10"? That is, I want a lexicographic compare, such that numbers in the string are compared by value. I guess this should be a version compare. Is it implemented in Julia, maybe in a package?

If you are generating the files and you can choose a file name my suggestion is to pad the number with zeros. The following function helps with that:

```julia
numstring(x, n=3) = string(x + 10^n)[2:end]

```

So in your case,

```julia
julia> fnames = "file_" .* numstring.(1:13, 3)
13-element Array{String,1}:
 "file_001"
 "file_002"
 "file_003"
 "file_004"
 "file_005"
 "file_006"
 "file_007"
 "file_008"
 "file_009"
 "file_010"
 "file_011"
 "file_012"
 "file_013"

```

In the link above, Palli suggests the following procedure:

```julia
julia> split(read(`ls -1v`, String))
19-element Array{SubString{String},1}:
 "file_1" 
 "file_2" 
 "file_3" 
 "file_4" 
 "file_5" 
 "file_6" 
 "file_7" 
 "file_8" 
 "file_9" 
 "file_10"
 "file_11"
 "file_12"
 "file_13"
 "file_14"
 "file_15"
 "file_16"
 "file_18"
 "file_20"
 "file_25"

```

---

<div class="post-metadata">

**Author:** ![cybervigilante](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cybervigilante/32/26687_2.png) [@cybervigilante](https://discourse.julialang.org/u/cybervigilante)\
**Post date:** [August 22, 2021, 4:07am UTC](https://discourse.julialang.org/t/list-files/22542/12 "2021-08-22T04:07:40Z")

</div>

Here’s a compact way to list files and directories separately:

# Print files,then directories

dir = readdir()  
println(‘\n’,“Files: \n”, [elm for elm in dir if !isdir(elm)])  
println(‘\n’,“Directories: \n”, [elm for elm in dir if isdir(elm)])

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [August 22, 2021, 5:50am UTC](https://discourse.julialang.org/t/list-files/22542/13 "2021-08-22T05:50:40Z")

</div>

You could also do:

```julia
d = readdir();
d[isdir.(d)]
d[.!isdir.(d)]

```
