我正在尝试使用变量在find命令中指定排除路径。

此代码段有效:

x="*test/.util/*"
y="*test/sh/*"

find test -type f -name "*.sh" -not -path "$x" -not -path "$y"

但是我想将-not -path移到变量中,如下所示:

x="-not -path *test/.util/*"
y="-not -path *test/sh/*"

# error: find: -not -path *test/.util/*: unknown primary or operator
find test -type f -name "*.sh" "$x" "$y"

# Tried removing quotes
# error: find: test/.util/foo.sh: unknown primary or operator
find test -type f -name "*.sh" $x $y 

我还尝试将引号添加到变量中的路径,但这导致没有路径过滤。

# no syntax error but does not exclude the paths
x="-not -path '*test/.util/*'"
y="-not -path '*test/sh/*'"

我正在使用OSX Mavericks; GNU bash版本3.2.51(1)-发行版(x86_64-apple-darwin13)。

我究竟做错了什么? 谢谢

===============>>#1 票数:5 已采纳

find接收-not -path *test/.util/*作为单个参数,而不是它需要的3个单独参数。 您可以改用数组。

x=(-not -path "*test/.util/*")
y=(-not -path "*test/sh/*")

find test -type f -name "*.sh" "${x[@]}" "${y[@]}"

引用时, ${x[@]}扩展为一系列单独的单词,每个数组元素一个,并且每个单词都保持正确的引用,因此按预期方式按原样传递模式以find

  ask by tony19 translate from so

未解决问题?本站智能推荐:

1回复

cd到包含在macOS上的Bash中的变量中存储的空格的路径

我有 当我执行cd $x或cd $y出现错误。 我不想做cd "$x"因为 我不知道哪个变量包含带空格的路径 不方便 任何解决方法?
2回复

如何将带有空格的路径存储到bash中的变量中

我想将/c/users/me/dir name到一个变量中,以将其传递给cd系统调用。 键入时有效: $ cd '/c/users/me/dir name' 要么 $ cd /c/users/me/dir\\ name 但是如果我存储它不起作用: 相同的结果
1回复

在bash变量中使用--filter的rsync命令

这类似于我在stackoverflow上看到的一些其他rsync bash变量问题,但这些答案都没有解决我的具体问题。 我想在bash脚本中运行以下命令,但是变量中包含rsync选项: 我注意到bash实际上解释如下: 这在rsync中也可以正常工作。 当我尝试将这些值放
1回复

Bash在远程上下文中使用之前在本地解析变量

我有一个在远程计算机上设置一些环境变量的脚本,但是我在远程计算机的上下文中解决了一些变量时遇到了问题。 这些变量必须先解析,然后再发送到遥控器。 如何将脚本执行器的IP正确地输入到远程计算机上的环境变量中?
1回复

重击查找并替换字符串

我正在编写代码,该代码将自动更改VestaCP面板的IP。 我需要用新变量$ newIP替换变量$ oldIP的代码,所以我写了这段代码。 但是代码不会替换oldIP.conf(123.123.123.123.conf)中的oldIP。 但是,如果我尝试 它可以完美地工作
5回复

引用vs不引用变量赋值的RHS上的变量

在shell脚本中,将这两个变量分配给另一个变量时,这两者之间有什么区别: 和 什么时候应该使用另一个?
3回复

在Bash变量中保留解释

我正在尝试在Bash变量中保留解释。 例 当我在命令提示符下运行以下行时。 我得到以下(这就是我想要的): 如果我将错误处理代码放在变量中,它会崩溃。 我曾尝试引用多种方式,但没有运气。 我似乎无法为变量的2>>部分保留解释。
7回复

eval,变量和引号的Bash问题

我一直在读这里和其他地方的bash引用,但我没有帮助解决这个问题。 问题是,我有一个小循环进行备份的脚本。 如果我不使用eval那么我在rsync遇到$OPTIONS变量的问题。 但如果我使用eval那么问题就转到了$CURRENT_DIR变量... rsync返回以下消
2回复

根据文本文件的名称查找和替换文本文件中的单词

我有2个文件:A.txt,B.txt 这两个文件中都包含字母NODE。 我想分别用A.txt和B.txt中的A_NODE和B_NODE替换每个文件中的NODE。 我知道有一个for循环和sed,但无法弄清楚这一点。 有什么建议么? 我刚在想:
1回复

扭矩PBS传递包含引号的环境变量

我有一个python脚本。 通常我会这样运行: 我必须通过调度程序运行此脚本。 我正在使用-v通过qsub传递python脚本的参数。 我已经尝试了多种',“,\\”转义的组合,但我做对了。 “精彩的图形标题”周围的引号总是丢失或弄乱。 这是pbs脚本的摘录