在目录~/temp/a/foo/
和~/temp/b/foo foo/
我有一些名为bar1
,bar2
,bar bar1
,bar bar2
等双引号VS星号文件名扩展中的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
能够理解?
请参阅http://mywiki.wooledge.org/DontReadLinesWithFor – 2013-03-16 23:34:27