bash - 使用 shell 脚本过滤目录列表

标签 bash shell

如果我有一个 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/

相关文章:

bash - 破折号中的颜色(不是 bash)

bash - 出错时停止调用脚本

linux - WHO 命令的值在一行中返回(而不是多行)

shell - powershell 命令未在 .bat 文件中运行?

linux - Bash:我无法在双 while 循环中运行 eval 命令

linux - 检查文件中的值是否大于或等于 bash 脚本中的值

bash - 在 bash 中重命名文件的陷阱

bash - 使用 sed 将 1234.0 更改为 1234 但保留 1.0234

bash - 在 bash 脚本与函数参数中设置

linux - 转换文件并将它们放在另一个目录中