シェルスクリプトでこのfor d in ./*/ ; do (cd "$d" && cp -R ../lib . ); done
を使用して、親ディレクトリ内のすべてのサブフォルダーにあるlibフォルダーをコピーしています。ただし、libフォルダーもlib内にコピーされます。それを回避する方法は?
extglob
なし:
for d in */ ; do
if [ "$d" != "lib/" ]; then
cp -R lib "$d"
fi
done
または、後で削除してください...(lib/lib
が事前に存在しない限り!)
for d in */; do cp -R lib "$d"; done
rm -r lib/lib
(ややおかしなことに、GNU cpはcp: cannot copy a directory, 'lib', into itself, 'lib/lib'
と言っていますが、とにかくそうします。)
一方通行:
shopt -s extglob
for d in ./!(lib)/; do #...
または、一致しないように移動します。
mv lib ../ #better not have a conflicting ../lib directory there
for d in */; do cp -R ../lib "$d"; done
Lsコマンドのdoes-not-includeオプションの使用:
for d in $(ls -I lib -1 */) ; do cp -R lib "$d" ; done