1つのコマンドで複数の種類のファイルをコピーする

1つのコマンドで複数の種類のファイルをコピーする

拡張子が異なる複数のファイルをあるディレクトリから別のディレクトリにコピーしたいと思います。

だから私は次のように書くでしょう:

cp -r dir1/*.gif dir2

しかし、同じコマンドですべての.jpgファイルをコピーしたいと思います。動作するANDコマンドはありますか?

答え1

簡単にすべて一覧表示できます。

cp dir1/*.gif dir1/*.jpg dir2

仕組みは、シェルがパラメータを拡張して実際に実行できるように、一致する*すべての名前を渡すことです。cp

cp dir1/file1.gif dir1/file2.gif dir1/file3.jpg dir1/file4.jpg dir2

答え2

cp /path/src/*.{gif,jpg} /path/dest 

情報についてワイルドカードとワイルドカードのパターン

特に:

{ } (curly brackets)
terms are separated by commas and each term must be the name of something or a wildcard. This wildcard will copy anything that matches either wildcard(s), or exact name(s) (an “or” relationship, one or the other).

For example, this would be valid:

cp {*.doc,*.pdf} ~
This will copy anything ending with .doc or .pdf to the users home directory. Note that spaces are not allowed after the commas (or anywhere else).

答え3

Forループはこの種の作業に適しています。

例:現在のディレクトリのすべての.pyファイルと.ipynbファイルをdst /というディレクトリにコピーします。

for file in *.py *.ipynb; do cp $file /dst/; done

関連情報