如何在目录中获取特定文件名并将其保存在 bash 中的文件中



我需要将包含一些特殊术语(如"B_"和"D_")的目录中的目录名称保存到文本文件中,但只有文件名而不是整个目录,但我不知道如何在 bash 中做到这一点。我需要如下所示的文本文件作为输出:

topout_B6_
topout__B6_
topout_B6_
topout_D2_
topout_D2_
topout_D2_

如果你的文件名足够简单,你可以使用 glob 扩展来获取它们的列表。此 glob 扩展将不包括任何父目录(但可能包括子目录)。

files=(*B_* *D_*) #stores an array of file names in $files

如果模式更复杂并且您需要正则表达式,则可以使用 find 实用程序。

files=($(find . -type f -regex ".*[BD]_?.*))

Find 将返回文件的完整路径,因此您需要去除前导路径。一种方法是使用参数替换。

stripped_files=$(for f in "${files[@]}"; do echo ${f##*/}; done) #iterate over array values

最后,您可以将其写出到文件中。(使用此处字符串)

>outfile <<<$stripped_files

相关内容

  • 没有找到相关文章

最新更新