【发布时间】:2013-03-05 13:08:06
【问题描述】:
在~/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
(cp 命令无法将"foo foo" 的最后一个foo 视为同一目录名称的一部分。)
for dir in `find . -type d -name '*foo'` ; do cp "$dir/*" "$(echo $dir|sed 's_foo__g')" ; done
("$dir/*" 未展开。)
尝试将$dir/* 替换为"$(echo $dir/*)" 更不成功。
有没有简单的方法来扩展$dir/* 以便cp 理解?
【问题讨论】:
标签: bash quotes asterisk expansion