我需要将包含一些特殊术语(如"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