小编uve*_*ett的帖子

双引号与Bash中的星号文件名扩展

在目录~/temp/a/foo/~/temp/b/foo foo/我有一个名为一些文件bar1,bar2,bar bar1,bar bar2,等.

我正在尝试编写一行Bash,将包含"foo"的目录中的所有这些文件作为名称的最后一部分复制到相应"foo"文件夹上方的文件夹中.

只要文件名中没有空格,这是一项简单的任务,但在处理foo foo目录时,以下两个命令会失败:

for dir in `find . -type d -name '*foo'` ; do cp $dir/* "$(echo $dir|sed 's_foo__g')" ; done
Run Code Online (Sandbox Code Playgroud)

(该cp命令无法将最后foo一个"foo foo"视为同一目录名的一部分.)

for dir in `find . -type d -name '*foo'` ; do cp "$dir/*" "$(echo $dir|sed 's_foo__g')" ; done
Run Code Online (Sandbox Code Playgroud)

("$dir/*"未扩展.)

喜欢尝试更换$dir/*"$(echo $dir/*)"已经甚至不太成功.

是否有一种简单的方法可以扩展$dir/*以便cp理解?

bash quotes asterisk expansion

5
推荐指数
1
解决办法
1457
查看次数

标签 统计

asterisk ×1

bash ×1

expansion ×1

quotes ×1