如果我有一个 BASH 变量:
Exclude="somefile.txt anotherfile.txt"
如何获取目录的内容,但将上述内容排除在列表中的文件中?我希望能够做这样的事情:
Files= #some command here
someprogram ${Files}
应向 someprogram
提供特定目录中的所有文件,${Exclude}
变量中的文件除外。修改 someprogram
不是一个选项。
最佳答案
我不确定你是否正在学习 unix shell 脚本,但这里是 bash 的工作示例:
#!/bin/bash
Exclude=("a" "b" "c")
Listing=(`ls -1Q`)
Files=( $(comm -23 <( printf "%s\n" "${Listing[@]}" ) <( printf "%s\n" "${Exclude[@]}"
) ) )
echo ${Files[@]}
请注意,我用双引号将“排除”中的每个文件名括起来并添加了
它们周围有括号。将 echo
替换为 someprogram
,更改 ls 命令
到您想要检查的目录,您应该可以使用它。
comm
程序是关键。
关于bash - 使用 shell 脚本过滤目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628564/