ディレクトリ~/temp/a/foo/
には、、、、などの名前の~/temp/b/foo foo/
ファイルがいくつかあります。bar1
bar2
bar bar1
bar bar2
名前の最後の部分として「foo」を含むディレクトリ内のこれらすべてのファイルを、それぞれの「foo」フォルダーの上のフォルダーにコピーする Bash の行を書き込もうとしています。
ファイル名にスペースが含まれていない限り、これは簡単な作業ですが、foo foo
ディレクトリを処理するときに次の 2 つのコマンドが失敗します。
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