forループを使用してコピーする方法は? [コピー]

forループを使用してコピーする方法は? [コピー]

for d in ./*/ ; do (cd "$d" && cp -R ../lib . ); done 私はこれをシェルスクリプトで使用して、親ディレクトリ内のすべてのサブフォルダにあるlibフォルダをコピーします。ただし、libフォルダもlibにコピーされます。この状況を避ける方法は?

ベストアンサー1

いいえ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'とにかくそうします。)

おすすめ記事