Saeko
Saeko

Reputation: 441

Grep with regex from file in bash script without inclusion of more folders

I have a file containing various paths such as:

/home/user/Desktop/Bash/file1.txt
/home/user/Desktop/Bash/file2.txt
/home/user/Desktop/Bash/file3.txt
/home/user/Desktop/Bash/moreFiles/anotherFile.txt
/home/user/Desktop/text/prettyFile.txt

And I receive a input from user that contains the directory, such as:

/home/user/Desktop/Bash/

And I usually save this expression into regex to find all the files in the directory by grep. However, if the folder has more folders, it includes them as well, but I want to only include the files in the directory that was entered by the user. My desired output is should be this:

/home/user/Desktop/Bash/file1.txt
/home/user/Desktop/Bash/file2.txt
/home/user/Desktop/Bash/file3.txt

But it keeps including

/home/user/Desktop/Bash/moreFiles/anotherFile.txt

which I don't want and I need to do it inside a bash script.

Upvotes: 0

Views: 54

Answers (1)

anubhava
anubhava

Reputation: 786289

You can use this grep command to get just the files directly under given path skipping sub-directories:

s='/home/user/Desktop/Bash/'
grep -E "$s[^/]+/?$" file

/home/user/Desktop/Bash/file1.txt
/home/user/Desktop/Bash/file2.txt
/home/user/Desktop/Bash/file3.txt

Upvotes: 2

Related Questions