从bash脚本中的文件使用正则表达式grep而不包含更多文件夹

时间:2018-03-07 09:26:45

标签: regex bash grep

我有一个包含各种路径的文件,例如:

/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

我收到来自用户的包含目录的输入,例如:

/home/user/Desktop/Bash/

我通常将此表达式保存到正则表达式中以通过grep查找目录中的所有文件。但是,如果文件夹中有更多文件夹,它也包含它们,但我想只将文件包含在用户输入的目录中。我想要的输出应该是这样的:

/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

我不想要,我需要在bash脚本中执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以使用此grep命令直接在给定路径跳过子目录下获取文件:

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