我有一个包含各种路径的文件,例如:
/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脚本中执行此操作。
答案 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