プレフィックスが同じ複数のディレクトリのサブフォルダにファイルをコピーする方法は?

プレフィックスが同じ複数のディレクトリのサブフォルダにファイルをコピーする方法は?

現在のディレクトリに「foo.txt」というファイルがあります。このディレクトリには次の名前もあります。私のフォルダ1マイフォルダ2ちょっと…各フォルダには「constant」というサブフォルダがあります。

「foo.txt」をコピーしたいです。myfolder1/定数myfolder2/定数など

次のコマンドを使用してこれを実行しようとしています。

cp foo.txt myfolder*/constant

これによりエラーが発生しました。

cp: omitting directory `myfolder1/constant'
cp: omitting directory `myfolder2/constant'
etc...

プレフィックスが同じ複数のディレクトリのサブフォルダにファイルをコピーする方法はありますか(この場合、プレフィックスは「myfolder」です)。

ベストアンサー1

3つ以上のパラメータを使用すると、cp最後のパラメータはターゲットディレクトリと見なされ、他のパラメータはその場所にコピーされるファイルと見なされます。

cpワイルドカードを使用していることを知りませんでした。シェルは、コマンドがワイルドカードを表示する前にワイルドカードを展開します。したがって、cp複数のターゲット機能がある場合でも、この構文は使用できません。

ループが必要です。 Bourneのようなシェルから:

(ret=0
for dir in myfolder*/constant/; do
  cp foo.txt "$dir" || ret=$?
done
exit "$ret")

ビジネスは$ret失敗の終了ステータスを報告します。cp

おすすめ記事