在一个目录中,有多个文件,例如:
file1
file2
file3
是否有一种简单的方法可以在 bash 中连接这些文件以获取一行(通过“OR”连接),如下所示:
文件1或文件2或文件3
或者我需要为其编写脚本吗?
最佳答案
您可以使用此函数打印所有以 "OR "
作为分隔符的文件名(包括带有空格、换行符或特殊字符的文件名)(假设您的文件名不包含 ASCII 代码 4
):
orfiles() {
local IFS=$'\4'
local out="$*"
echo "${out//$'\4'/ OR }"
}
然后将其称为:
orfiles *
工作原理:
- 我们在函数内部将
IFS
(内部字段分隔符)设置为 ASCII4
- 我们将
"$*"
的输出存储在局部变量out
中。这将在变量$out
中的每个文件名后面放置\4
。 - 最后,使用 BASH 字符串替换,我们在打印
$out
的输出时将\4
全局替换为"OR "
。
在 Unix 系统中 IFS
只是一个单字符分隔符,因此它不能存储多字符串 "OR "
,我们必须按照如上所示分 2 个步骤来完成此操作。
关于linux - unix 将文件列表连接到线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46298684/