在目录中~/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
理解?