任意の拡張子のファイルを除いてディレクトリをまるごとコピーするには
拡張子.aaaと.bbbを除いてディレクトリをコピーする
bashの場合
findの結果をみてディレクトリならmkdirをそうでないときにコピーする
$ for i in `find . -not -name "*.aaa" -not -name "*.bbb"`; do echo $i ;if [ -d $i ]; then mkdir -p target/$i ; else cp $i target/$i ;fi ; done
拡張子の取り出しをbash側で行う場合 #{変数名##*.} を使うといい
$ for i in `find .`; do if [ -d $i ]; then echo $i; mkdir -p target/$i; elif [ ${i##*.} != "aaa" -a ${i##*.} != "bbb" ]; then cp $i target/$i; fi; done
awk使ってもいいのだがあまり効果が無い。##*.を覚えてなくていいだけマシか…
$ for i in `find . | awk '!/.aaa|.bbb/`; do if [ -d $i ]; then mkdir -p target/$i;else cp $i target/$i; fi; done
grepでもいい。
find .|grep -v '\(.aaa\|.bbb\)'