在目录
(
~/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/*"
没有被展开。)
尝试用 "$(echo $dir/*)"
代替 $dir/*
的方法甚至更加不成功。
是否有一种简单的方法来展开 $dir/*
,以便 cp
能够理解?