Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wildcard single file

Tags:

bash

glob

Given the following files

$ ls
bar.txt  baz.txt  qux.txt

I would like to save only the first txt file to a variable. I tried this

$ var=*.txt

but it just saves all files

$ echo $var
bar.txt baz.txt qux.txt

I would like to do this using a wildcard if possible, and extglob is okay. The files here do not have spaces in the name but I would like the solution to also work for files with spaces.

After using kamituel’s answer I realized that this can work too

$ set *.txt

$ echo $1
bar.txt
like image 482
Zombo Avatar asked Apr 05 '13 06:04

Zombo


1 Answers

Use this:

$ var=(*.txt)
$ echo $var
bar.txt

Key here is to use parentheses - putting elements into array. So echo $var prints the first element from the array (bar.txt). You can see that by printing the whole array:

$ echo ${var[@]}
bar.txt baz.txt qux.txt
like image 194
kamituel Avatar answered Oct 14 '22 06:10

kamituel